返回对象时,没有匹配的调用函数

时间:2013-07-10 13:46:25

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

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

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

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

当我在Linux下使用file1.cpp编译g++时,我收到以下消息:

  

错误:没有匹配函数来调用'A :: A(A)',   候选人是:A :: A(常见问题*)

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

1 个答案:

答案 0 :(得分:5)

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