所以我有一个指向基类的指针 vector ,它用于保存派生类的所有实例。
基类:
#ifndef BASE_H
#define BASE_H
Class Base
{
public:
virtual void DoSomething();
};
#endif
派生类:
#ifndef DERIVED_H
#define DERIVED_H
#include "base.h"
Class Derived : public Base
{
public:
void DoSomething();
float y;
};
#endif
将这些东西存储在里面:
std::vector<Base*> theVec;
问题是,访问仅存在于 Derived 中的浮点变量“y”的最佳方式是什么?
我可以在 Base 中有一个虚函数,它在 Derived 中指定以返回一个变量,访问方式如下:
theVec[0]->GetVar("y");
但是当 Derived 可能有多个不在基础中的不同类型的变量时,这似乎最终会变得非常困惑。有什么方法可以使访问 Derived 中的唯一变量更通用吗?
如有任何建议,我们将不胜感激!
最佳答案
你使用dynamic_cast
。
if (Derived* ptr = dynamic_cast<Derived*>(theVec[0])) {
// do something here
}
关于c++ - 通过基类容器访问派生类特有变量的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6707485/