Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何正确地投射对象?_C++ - Fatal编程技术网

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
类,它会正确编译。你已经这么做了吗?非常感谢你,但是请假设酒吧已经定义好了。