#include<iostream>
using namespace std;
class Abs
{
public:
virtual void hi()=0;
};
class B:public Abs
{
public:
void hi() {cout<<"B Hi"<<endl;}
void bye() {cout<<"B Bye"<<endl;}
};
class C:public Abs
{
public:
void hi() {cout<<"C Hi"<<endl;}
void sayonara() {cout<<"C Sayonara"<<endl;}
};
int main()
{
Abs *bb=new B;
bb->bye();
Abs *cc=new C;
cc->sayonara();
}//main
编译器说
test2.cpp: In function ‘int main()’:
test2.cpp:26: error: ‘class Abs’ has no member named ‘bye’
test2.cpp:28: error: ‘class Abs’ has no member named ‘sayonara’
由于这个问题,每次我创建一个继承自它的新派生类时,我都必须向 Abs 类添加函数(向上转换对我来说是强制性的。我计划的程序要求它是这样的)。一旦创建了基类,我就不想碰它。这个问题是不是违反了一旦你创建了一个基类,你就不必修改它的原则了。有什么办法可以解决这个问题?ps:工厂设计模式和原型设计模式我都看过,但是好像都不能解决。