トップページ > プログラム > 2014年12月12日 > msKuYMsR

書き込み順位&時間帯一覧

11 位/215 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000001300004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
146
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net

書き込みレス一覧

【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
146 :デフォルトの名無しさん[sage]:2014/12/12(金) 18:47:21.80 ID:msKuYMsR
+演算子のオーバーロードに関する質問なんですけど、
次のようなクラスがあったとして、
template<typename T>
class A
{
public:
A(T val_) : val(val_) {}
...
private:
T val;
};
このクラスのための+演算子(2項バージョン)を実装したいと思って、
template<typename T>
A<T>&amp; operator+(const A<T>&amp; lhs, const A<T>&amp; rhs)
{
...
return ret;
}
というようなものを作ったんですけど、次のようにするとエラーがでてしまいます
A<int> a(1), a2(2);
A<int> a3 = a1 + a2;
A<int> a4 = a3 + 1; //←ここでエラー
ここでintからA<int>への変換が働いてうまく動くと期待したんですが、ダメでした
こういうコードが動くように+演算子を実装したいんですけどどうすればいいですか?
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
149 :146[sage]:2014/12/12(金) 19:01:29.43 ID:msKuYMsR
コンパイル時に、たくさんエラーメッセージが出るんですが、だいたい以下のようなかんじです

...テンプレート 引数を 'const A<T> &' に対して 'int' から減少できませんでした
...クラス、構造体、共用体に既定のコンストラクターがありません
...これらのオペランドと一致する演算子 "+" はありません オペランドの型: A<int> + int
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
150 :146[sage]:2014/12/12(金) 19:13:12.95 ID:msKuYMsR
>>146で
A<T>&amp; operator+(const A<T>&amp; lhs, const A<T>&amp; rhs)
のところで
A<T>&amp;となってるのは2chに書き込むときのミスです
A<T>&amp;→ A<T>&
に修正します、すいません
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
151 :146[sage]:2014/12/12(金) 19:21:25.51 ID:msKuYMsR
>>148
ありがとう、動きました
ただ、左オペランドがTのバージョンも書く必要がある思いますけど、
そういうものなんでしょうか?


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。