我有一个代码,
class foo : public bar
{
public:
foo(){};
~foo(){};
};
class wu
{
public:
wu(const bar& Bar ) :
m_bar(Bar)
{};
~wu(){};
private:
bar m_bar;
};
int main()
{
foo tmpFoo;
wu tmpWu(tmpFoo);
}
现在我的问题是,上面的代码不会编译,错误信息是“错误:变量wu tmpWu有初始化程序但是类型不完整”。
是否意味着,我必须将tmpFoo对象强制转换为bar类?
请建议。
感谢。
答案 0 :(得分:5)
您必须在m_bar(Bar)
类构造函数中使用语法m_bar = Bar
而不是wu
。另外,从tmpFoo
变量声明中删除大括号,否则您将声明一个返回foo
对象并且不接收任何参数的函数。
编辑后:我尝试了该代码,它给出的问题是bar
类未定义。在您的情况下,编译器给出了“不完整类型”错误;这意味着在包含文件(或同一文件)中的某个地方,类bar
以这种方式声明:
class bar;
但从未定义其内容。
答案 1 :(得分:4)
添加
class bar {};
您的代码适合我。我错过了什么吗?