【问题标题】:No matching function for call, when returning an object [closed]返回对象时没有匹配的调用函数[关闭]
【发布时间】:2013-07-10 13:46:24
【问题描述】:

A是我自己在a.h中定义的一个类。构造函数A(const char* str)a.cpp中定义为:

A::A(const char *str){
    ...
}

在file1.cpp中,我想返回一个A对象:return A("");

当我在 Linux 下编译 file1.cppg++ 时,我收到以下消息:

错误:没有匹配的函数调用'A::A(A)', 候选人是:A::A(const char*)

显然空字符串"" 不属于A 类。谁能告诉我出了什么问题?

【问题讨论】:

  • 如果我用你提供的信息做一个示例程序:it works. 如果你想获得帮助,请提供all相关信息:完整的编译日志,完整的声明A(或至少在所有构造函数中),以及执行 return 的函数(也可能是调用该函数的上下文)。

标签: c++ compiler-errors g++


【解决方案1】:

您缺少A 的复制构造函数,它将创建使用A("") 创建的类的副本。 RVO 很可能会消除实际副本,但您仍然需要提供副本构造函数。

【讨论】:

  • 注意 C++ 通常会自动定义一个复制构造函数。既然不是,那可能是因为基类或成员没有可访问的复制构造函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多