我有一个结构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