私には独特の要件があり、解決策を見つけることができませんでした。
class Base
{
public:
void func()
{
//access the member say 'var' of derived class
}
}
- この場合、base から派生したすべてのクラスがメンバー 'var' を持つことが必須です。
- 派生クラスの名前は何でもかまいません。
私には独特の要件があり、解決策を見つけることができませんでした。
class Base
{
public:
void func()
{
//access the member say 'var' of derived class
}
}
派生クラスのすべて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;
};
virtual
そのメンバーを返す関数が必要になります。
class Base
{
public:
void func()
{
getVar();
}
virtual int getVar() = 0;
};
class Derived : public Base
{
int var;
virtual int getVar() { return var; }
};
var
それは共通のメンバーであるため、より良い設計は基本クラスにあるでしょう。それ以外の場合、C++ にはリフレクション メカニズムがないため、必要な方法でクラスを動的に検査することは問題外です。