C++ Итерация по вектору интеллектуальных указателей

у меня есть класс с этой функцией:

typedef boost::shared_ptr<PrimShapeBase> sp_PrimShapeBase; 



class Control{
     public:
         //other functions
         RenderVectors(SDL_Surface*destination, sp_PrimShapeBase);
     private:
         //other vars
          vector<sp_PrimShapeBase> LineVector;

};

//the problem of the program

void Control::RenderVectors(SDL_Surface*destination, sp_PrimShapeBase){
    vector<sp_PrimShapeBase>::iterator i;

    //iterate through the vector
    for(i = LineVector.begin(); i != LineVector.end(); i ++ ){
      //access a certain function of the class PrimShapeBase through the smart
      //pointers
      (i)->RenderShape(destination); 

    }
}

Компилятор говорит мне, что класс boost ::shared _ptr не имеет члена с именем 'RenderShape', который я нахожу странным с тех пор, как класс PrimShapeBase, безусловно, имеет эту функцию, но находится в другом заголовочном файле. Какова причина этого?

10
задан Benjamin 13 December 2013 в 20:20
поделиться