抽象類具有內部虛函數。 抽象類是否可以稍後實現內部虛擬類?如何在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客戶端調用該抽象類中定義的虛函數。 –