次のコードが機能しない理由を理解しているか、少なくとも考えがあります。
class Spambar {
public:
Spambar() {};
Spambar(Spambar& sb) {};
Spambar operator + (Spambar sb) {
Spambar new_sb;
return new_sb;
}
};
int main() {
Spambar sb1;
Spambar sb2;
Spambar sb3 = sb1 + sb2; // <<< Error: "No matching function for call to ... "
}
問題は、コピーコンストラクターがインスタンスへの参照を期待していることだと思いSpambar
ます。参照は返されず、浅いインスタンスが返されるため、コンパイルは失敗します。
それで、どうすればそれを機能させることができますか?