在基类方法中访问派生类成员
Accessing Derived class members in base class method
我有一个特殊的要求,但无法找到解决方案。
class Base
{
public:
void func()
{
//access the member say 'var' of derived class
}
}
- 在我们的例子中,所有来自 base 的派生类都必须具有成员 'var'。
- 派生类的名称可以是任何内容。
既然派生类中的所有var
都需要是相同的类型才能有任何意义,为什么不简单地在基类中呢?
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++没有任何反射机制,因此以您想要的方式动态检查类是不可能的。
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 如何使用基类指针引用派生类成员
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 在 C++ 中用派生类型重写成员函数
- 如果基类包含双指针成员,则派生类的构造函数
- 在派生类中绑定非静态模板化成员函数
- 为什么基指针可以访问虚拟函数中的派生成员变量
- 在销毁派生成员之前,在破坏者中调用共同功能
- 带有派生成员的基类的独特指针
- 为什么基类对象的私有成员仍然从派生成员中分配
- 派生成员函数指针的多态性
- 派生成员和重载Ostream运算符
- 通过指向派生类的指针访问派生成员变量
- 在构造过程中是否有一种简洁的方法可以派生成员的类型?
- 如何使用派生类特定的方法:派生类中的派生成员
- 获取从基类指针到具有不同类型的两个派生成员变量的访问权
- 当我使用根据基类定义的成员函数指针时,编译器如何调用派生成员函数?
- 将luabind派生成员调用为协同程序
- C++ POD 结构继承?是否有任何关于派生成员的内存布局的保证