这是我的问题:
class A {
public:
int foo;
void setFoo(val) { foo = val; }
};
class B1 : public A {
public:
void foo();
}
class B2 : public A {
public:
void bar();
}
int main()
{
A obj;
switch(t) // some menu
{
case '1':
obj.setFoo(something);
case '2':
obj.foo();
case '3':
obj.bar();
}
return 0;
}
Switch处于while循环中 - 这是某种菜单。第一个案例先运行。
问题是案例2和3. obj是基类'实例,因此我无法访问这些方法。
我该如何解决这个问题?
为两个派生类创建两个不同的对象不起作用,因为我必须对它们使用setFoo()方法,而且,它将不再是相同的属性。
答案 0 :(得分:3)
您应该将基类中的这些函数声明为虚函数,或者至少在基类中声明它们。