2010-09-15 73 views
0

我有一个代码,如何正确投射物体?

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); 
} 

现在我的问题是,上面的代码将无法编译和错误消息是“错误:变量武tmpWu有初始值设定但类型不完全”。

这是否意味着,我必须投的tmpFoo对象栏类?

请指教。

谢谢。

+1

在于,在完整的代码?如果没有定义'bar',这将无法编译。 – 2010-09-15 05:59:27

+0

你得到的错误与编辑的代码也? (假设'bar'类中已定义) – Naveen 2010-09-15 05:59:43

+0

是,它不是完整的或实际的代码,但相同的逻辑。 – domlao 2010-09-15 06:01:23

回答

5

在类构造函数wu中必须使用语法m_bar(Bar)而不是m_bar = Bar。此外,删除从tmpFoo变量声明的括号,否则你将被宣布返回foo对象和接收参数的函数。


您的编辑后:我试过了代码,并给问题是,bar类是不确定的。在你的情况下,编译器给出了一个“不完整类型”的错误;这意味着,包含文件中(或在同一个文件)的地方,类bar声明是这样的:

class bar; 

但从未定义它的内容。

+0

谢谢,我刚刚编辑。 – domlao 2010-09-15 05:56:49

+0

非常感谢您,但请假设酒吧已定义。 – domlao 2010-09-15 06:04:54

+2

@sasayins:如果'bar'被定义为'class bar {};'它可以很好地... – 2010-09-15 06:15:54

4

加入

class bar {}; 

你的代码为我工作。我错过了什么吗?