В конкретном примере, скажем, мне дано
vector<shared_ptr<DClass>> cVector
, а DClass (который является производным от MyClass) имеет следующий интерфейс
class DClass: public MyClass {
public:
DClass( string id, string name, int p, int v )
: MyClass id, name, p ), var1_ ( v ) {}
int GetDClassVar1() const { return var1_; }
private:
int var1_;
};
и MyClass (который наследует DClass от) имеет следующий интерфейс
class MyClass {
public:
MyClass( string id, string name, int p )
: id_( id ), name_( name ), myclassvar1__( p ) {}
string GetMyClassID() const { return id_; }
string GetMyClassName() const { return name_; }
int GetMyClassVar1() const { return myclassvar1__; }
virtual int GetDClassVar1() const { return 0; }
protected:
string id_;
string name_;
int myclassvar1_;
};
Как я могу вызвать функцию GetDClassVar1, используя cVector, предполагая, что заполнен cVector?
*** РЕДАКТИРОВАТЬ Я пытаюсь использовать
cVector.at(1).GetDClassVar1.()
и я получаю ошибку
const value_type’ {aka ‘const class std::shared_ptr<MyClass>’} has no member
named ‘GetDClassVar1'