C++ 创建未知类的对象(两个继承类)
我有以下课程:C++ 创建未知类的对象(两个继承类),c++,class,inheritance,C++,Class,Inheritance,我有以下课程: class A { void commonFunction() = 0; } class Aa: public A { //Some stuff... } class Ab: public A { //Some stuff... } 根据用户输入,我想创建Aa或Ab对象。我的imidiate思想是: A object; if (/*Test*/) { Aa object; } else { Ab object; } 但是编译器给了我
class A {
void commonFunction() = 0;
}
class Aa: public A {
//Some stuff...
}
class Ab: public A {
//Some stuff...
}
根据用户输入,我想创建Aa或Ab对象。我的imidiate思想是:
A object;
if (/*Test*/) {
Aa object;
} else {
Ab object;
}
但是编译器给了我:
error: cannot declare variable ‘object’ to be of abstract type ‘A’
because the following virtual functions are pure within ‘A’:
//The functions...
有没有解决这个问题的好方法?使用指针:
A * object = NULL;
if (/*Test*/) {
object = new Aa;
} else {
object = new Ab;
}
A *object;
if (/*Test*/) {
object = new Aa();
} else {
object = new Ab();
}
使用指针:
A *object;
if (/*Test*/) {
object = new Aa();
} else {
object = new Ab();
}
正如其他人指出的,C++中的运行时多态性通过指针或引用来工作。
一般来说,你正在寻找.< /p>
,正如其他人指出的,C++中的运行时多态性通过指针或引用来工作。
一般来说,您正在查找。'A'是一个抽象类。对于commonFunction,它没有自己的实现,因此无法直接实例化。只有它的后代可以实例化,假设它们实现了所有的抽象方法 如果要基于输入实例化子类,然后在公共代码中使用该对象,请执行以下操作:
A* object;
if (/*Test*/) {
object = new Aa;
} else {
object = new Ab;
}
...
object->commonFunction();
...
delete object;
“A”是一个抽象类。对于commonFunction,它没有自己的实现,因此无法直接实例化。只有它的后代可以实例化,假设它们实现了所有的抽象方法 如果要基于输入实例化子类,然后在公共代码中使用该对象,请执行以下操作:
A* object;
if (/*Test*/) {
object = new Aa;
} else {
object = new Ab;
}
...
object->commonFunction();
...
delete object;
您的基类还需要一个虚拟析构函数。您的基类还需要一个虚拟析构函数。