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
。谁能告诉我出了什么问题?
答案 0 :(得分:5)
您缺少A
的复制构造函数,它将创建使用A("")
创建的类的副本。最有可能使用RVO消除实际副本,但您仍需要提供复制构造函数。