C++ 如何正确地投射对象?
我有密码C++ 如何正确地投射对象?,c++,C++,我有密码 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); } 现在我的问题
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);
}
现在我的问题是,上面的代码将无法编译,错误消息是“error:variable wu tmpWu具有初始值设定项,但类型不完整”
这是否意味着我必须将tmpFoo对象强制转换为bar类
请给我一些建议
谢谢。您必须使用
m_bar(bar)
语法,而不是wu
类构造函数中的m_bar=bar
。另外,从tmpFoo
变量声明中删除大括号,否则将声明一个返回foo
对象且不接收任何参数的函数
编辑后:我尝试了该代码,但它给出的问题是
bar
类未定义。在您的例子中,编译器给出了一个“不完整类型”错误;这意味着在包含的文件(或同一文件)中的某个地方,类bar
是这样声明的:
class bar;
但它从未定义过它的内容。添加
class bar {};
你的代码对我有用。我遗漏了什么吗?这是完整的代码吗?如果未定义
bar
,则无法编译此代码。编辑的代码段也会出错吗?(假设已经定义了bar
类)是的,它不是完整的或实际的代码,而是相同的逻辑。如果定义bar
类,它会正确编译。你已经这么做了吗?非常感谢你,但是请假设酒吧已经定义好了。