У меня есть своеобразное требование и я не смог найти решение.
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 ++ не имеет никакого механизма отражения, поэтому динамическая проверка классов так, как вам хотелось бы, исключена.