我有一個結構C++在類構造上做了一個類構造成員?
struct MyStruct {
MyStruct(XML cfg) { ... }
int m_1, m_2, ... ;
}
和A類
class MyBaseClass {
public:
MyBaseClass() {}
MyStruct m_struct;
}
class MyClass : public MyBaseClass {
public:
MyClass(XML cfg) { m_struct = MyStruct(cfg); }
}
現在的編譯器抱怨MYSTRUCT沒有一個空的構造
error: no matching function for call to ‘MyStruct::MyStruct()’
MyClass(XML cfg) { m_struct = MyStruct(cfg); }
我不認爲德繼承戲劇一個角色ehre,但我保持它的完整性,因爲它可能是這樣。我從來沒有顯式調用MyStruct的空構造函數。類MyClass是否這樣做是因爲m_struct是它的成員?
如果是這種情況,有沒有辦法沒有它初始化成員或只有指針作爲成員纔有可能?
我知道我可以只需添加一個空的構造我的結構或改變構造函數
MyClass(XML cfg) : m_struct = MyStruct(cfg) {}
解決這個問題,但我很好奇,想知道究竟是怎麼回事。
'struct'和'class'是一樣的。它們在這裏不構成有用的類別。 – juanchopanza
我使用一個結構體,因爲它只包含幾個公共成員。這個類本身包含了比我的例子更多的東西,我只是試圖在我的示例中成爲minimalsitic – chrise
繼承在這裏確實沒有任何作用。你可以完全刪除MyClass,實例化MyBaseClass,並有完全相同的問題。 – WhozCraig