抽象类具有内部虚函数。 抽象类是否可以稍后实现内部虚拟类?如何在C++中实现内部抽象成员类?
我尝试以下:
#include <bits/stdc++.h>
using namespace std;
class C1 {
public:
class Child {
int tmp;
virtual int getint() = 0;
};
virtual Child getChild() = 0;
};
class C2: public C1 {
public:
class Child {
int getint()
{
return 10;
}
} c;
Child getChild()
{
return c;
}
};
int main() { return 0; }
儿童是一个抽象类,这将在派生类中推翻。我希望执行子可以用来定义一个函数。
但是,我得到了一个错误:
invalid abstract return type for member function 'virtual C1::Child C1::getChild()'
我不能实施内部抽象类中派生类,就像实现虚拟函数?
这与内部类没有任何关系。你可以极大地简化你的例子。这里有一个[mcve]:'struct foo {virtual stuff()= 0; }; foo make_foo();'。 – juanchopanza
您不能将抽象对象作为值返回。如果你这样做,那么客户如何使用它,因为缺少'纯虚函数'的实现?但是你可以返回指向这个对象的指针。另外:在你的例子中,'Child'不是抽象的。将其编辑为某人可能不了解您的问题。 –
@MichałWalenciak客户端调用该抽象类中定义的虚函数。 –