For a concrete example, say I am given
vector<shared_ptr<DClass>> cVector
and DClass (which is derived from MyClass) has the following interface
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_;
};
and MyClass (which DClass inherits from) has the following interface
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_;
};
How can I call upon the GetDClassVar1 function using cVector assuming that cVector is populated?
***EDIT I try using
cVector.at(1).GetDClassVar1.()
and I get the error
const value_type’ {aka ‘const class std::shared_ptr<MyClass>’} has no member
named ‘GetDClassVar1'