Dex*_*ter -3 c++ inheritance class base-class derived-class
我有一个特殊的要求,但无法找到解决方案.
class Base
{
public:
void func()
{
//access the member say 'var' of derived class
}
}
Run Code Online (Sandbox Code Playgroud)
因为var派生类中的所有s都需要具有相同的类型甚至没有任何意义,为什么不简单但它在基类中呢?
class Base
{
public:
void func()
{
// use var
}
protected: // allow derived classes to access 'var'
// and give it a value on construction
// where T == whatever type you want
Base(T v) : var(v){}
T var;
};
Run Code Online (Sandbox Code Playgroud)
你需要一个virtual返回该成员的函数:
class Base
{
public:
void func()
{
getVar();
}
virtual int getVar() = 0;
};
class Derived : public Base
{
int var;
virtual int getVar() { return var; }
};
Run Code Online (Sandbox Code Playgroud)
一个更好的设计将var在基类中,因为它是一个共同的成员.否则,C++没有任何反射机制,因此以你想要的方式动态检查类是不可能的.