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 に答える