c++ - 直接从函数返回类实例的要求?

标签 c++ class

我在 C++ 中有一个函数,它包装了一个输出流构造函数,因此它可以传递一个指向它在其中运行的父类的指针,ala:

pf_istream PF_Plugin::pf_open_in() {
    return     pf_istream(this);
}

然而,当我这样做时,我得到了这样的结果:

pf_plugin.cc:103: error: no matching function for call to ‘pf_istream::pf_istream(pf_istream)’

pf_istream.hh:36: note: candidates are: pf_istream::pf_istream(const PF_Plugin*)

pf_istream.hh:29: note: pf_istream::pf_istream(pf_istream&)

我已经定义了一个复制构造函数和赋值运算符(如上所示),如果我这样编写函数:

pf_istream PF_Plugin::pf_open_in() {
   pf_istream to_ret(this); 
   return     to_ret;
}

它工作得很好。如果我尝试直接从对函数的调用中分配一个 pf_istream 实例,我会得到类似的错误,例如:

pf_istream inFile = pf_open_in();

我还需要添加什么才能使这项工作正常进行?

最佳答案

> pf_istream::pf_istream(pf_istream&)

这是你的问题。它没有正确地找到你的复制构造函数,因为它正在传递一个临时的。您的复制构造函数应该采用 const&,如下所示:

pf_istream::pf_istream(const pf_istream&) { ... }

关于c++ - 直接从函数返回类实例的要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3173441/

相关文章:

php - PHP中带有自定义ID和自定义消息的错误处理

c++ - 在 C++ 中相互引用 bool 指针的正确方法

c++ - 仅双击运行时 basic_string 析构函数上的 qt C++ 异常

c++ - 如何从字符串中解析日期/时间?

c++ - Firebreath NPAPI 插件如何登录

c++ - 使用另一个类的类

C++ 游戏访问单独的类变量

c++ - 在 Qt 中使用 QGraphicsScene 函数时出错

jquery - 我们可以像 CSS3 一样在 jQuery 中使用类转换吗?

java - 实例是否应该使用 setter/getter 来访问它们自己的私有(private)数据成员?