0

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*)

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

4

1 回答 1

5

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

于 2013-07-10T13:55:10.103 回答