编辑:baseObject
复制构造。
由于您尚未为baseObject
定义默认构造函数,编译器无法构造derivedObject
,因为没有明确指定要使用哪个baseObject
构造函数。
在你的derivedConstructor
的定义中,那么你需要精确地指定baseObject
的构造函数。因为我不知道你的baseObject
是什么样子的,我下面的占位符使用:
derivedObject(const baseObject &base, const std::string &extra1)
: baseObject(PARAM1, PARAM2)
{
baseparameter1 = base.baseparameter1;
baseparameter2 = base.baseparameter2;
extraparameter1 = extra1;
}
在您的特定情况下,如果你想创建一个已经存在的baseObject
一个derivedObject
,你应该定义baseObject
的拷贝构造函数,并做如下:
derivedObject(const baseObject &base, const std::string &extra1)
: baseObject(base)
{
baseparameter1 = base.baseparameter1;
baseparameter2 = base.baseparameter2;
extraparameter1 = extra1;
}
看起来像你的类'baseObject'没有默认的构造函数。我们可以看到'baseObject'吗? – Foggzie
这是正确的,但它为什么需要有一个。我通过的baseobject应该已经构建好了 – marcwho
派生对象的构造函数将自动调用其基类的构造函数。这不是因为你传入的'baseObject',这是因为'derivedObject'本身。 – Foggzie