我已經看到這種問題的多個答案,但我不知道如何解決它。主要的問題可能是我正在處理別人的代碼,但是呃。下面是針對此問題減少樣品: 我有一類鏈接許多其他類:無法將變量聲明爲抽象類型,因爲虛擬函數是純粹的 - 具有多重繼承
class Interface
: public system_atoms,
public system_io,
/* etc, others */
{
/* A few functions, none that matters here - none from the inherited classes redefined */
}
裏面system_atoms,我有:
class system_atoms {
public:
virtual int init_atom(int atom_number) = 0;
virtual int check_atom_id(int atom_number) = 0;
}
而且我應該從接口繼承一個類:
class Interface_proxy : public Interface {
public:
/* stuff - no function from the inherited classes redefined */
}
在的.cpp:
Interface_proxy global_interface_proxy;
編譯帶來錯誤,指出「無法將變量global_interface_proxy
聲明爲抽象類型Interface_proxy
,因爲虛擬函數[system_atoms中列出的兩個]是純粹的」。
我不是很精通C++。我想我應該重新定義這兩個虛函數是純粹的(在沒有= 0
和virtual
的情況下是相同的?),以便該變量不是抽象類型。但是我的知識停留在那裏 - 而多重繼承讓我感到困惑。
如果該類具有純虛擬方法,則不能創建該類的實例。它被稱爲抽象類。所有派生類都必須實現這些方法,否則它們也將是抽象的。 –
即使沒有多重繼承,你也會得到同樣的錯誤。如果你想聲明一個'Interface_proxy',它將需要一個指針或引用,然後你將不得不指向或者去實際的非抽象的(例如Interface_proxy),它實現了純粹的fns。 – doctorlove