我如何制作虚拟变量?
我知道有虚函数,但没有虚变量。没有添加它可能是因为大部分时间不需要它,但我最近遇到了一个问题:
class A
{
public:
int bar;
};
class B : public A
{
public:
float foo;
};
class C : public A
{
public:
double foo;
};
int main()
{
std::vector<A*> v;
v.push_back(new B());
v.push_back(new C());
std::cout << v[1]->bar << v[0]->foo; //error because it will not find 'foo' in A
}
无论如何,我可以阻止这个错误吗?
回答
为什么不在两个类中都使用虚拟 getter?像: virtual int getA() 和 virtual int getB()
那么您访问这些变量会更容易:)
- 代码示例可能有助于做出一个好的答案,我建议您添加一个代码示例,以便您的答案更好、更充实。
- 旁注:与从对象获取数据的函数相比,更喜欢对对象进行操作的函数,以便可以在其他地方完成操作。如果工作是在对象内部完成的,您可能不需要知道包含的变量是`int`、`float`、`foo` 还是wharever。