前提・実現したいこと
ネストしたクラス内の加算演算子を作成したいのですが,うまくいきません。
作成したコードは以下のとおりです。mainのa+bの部分でエラーがでます。
どなたか,お分かりになる方のご教示お願いいたします。
発生している問題・エラーメッセージ
Invalid operands to binary expression ('Foo<int>::Boo' and 'Foo<int>::Boo')
該当のソースコード
C++
1template<typename T> 2struct Foo{ 3 struct Boo{ 4 T val; 5 Boo& operator+=(const Boo& r){ 6 val+=r.val; 7 return *this; 8 } 9 }boo; 10}; 11 12template<typename T> 13using Boo_t = typename Foo<T>::Boo; 14template<typename T> 15Boo_t<T> operator+(const Boo_t<T>& a, 16 const Boo_t<T>& b){ 17 Boo_t<T> t=a; 18 t += b; 19 return t; 20} 21 22int main(){ 23 Foo<int>::Boo a; 24 a.val=10; 25 Foo<int>::Boo b; 26 b.val=20; 27 Foo<int>::Boo c = a+b; 28 29 return 0; 30}
補足情報(FW/ツールのバージョンなど)
clang
C++17
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/18 15:35