クラステンプレートにoperator +を使用して追加をオーバーロードする演算子

グルジアのゲラシム

ベクトルに値が含まれv[i]ていることを使用して値を追加する関数が必要です。operator+v10,23

#include <iostream>
#include <vector>

template<typename T>
class Measurement 
{
private:
    T val;
public:
    Measurement(T a)
        : val{ a }
    {}

    T value() const { return val; }

    Measurement<T>& operator+(const T& nr) 
    {
        //... ???
        return *this;
    }

};

int main()
{
    //create a vector with values (10,2,3)
    std::vector<Measurement<int>> v{ 10,2,3 };
    v[2] + 3 + 2; //add at v[2] value 5
    for (const auto& m : v) std::cout << m.value() << ",";
    return 0;
}

結果は次のようになります 10,2,8

JeJo

valインスタンスのを他に追加するだけですnr

Measurement<T>& operator+(const T& nr)
{
   this->val += nr;
   return *this;
}

ただし、これをオーバーロードするoperator+と誤解を招く可能性があるため、そのようなことは避けてください。したがって、私は伝統的な方法を提案します

Measurement<T> operator+(const T& nr)
{
   Measurement<T> tmp{ *this };
   tmp.val += nr;
   return tmp;  // returns the temporary, which you need to reassign!
}

そして、やります

v[2] = v[2] + 3 + 2; 

必要な結果のために。


またはoperator+=、参照を返すことを意味するより良い提供Measurement<T>

Measurement<T>& operator+=(const T& nr)
{
   this->val += nr;
   return *this;
}

そしてそれを次のように呼びます

v[2] += 3 + 2;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オーバーロードされた演算子を使用してコンストラクターを追加する

分類Dev

テンプレート関数を使用してベクトルに要素を追加するために<<演算子をオーバーロードする方法は?(c ++)

分類Dev

汎用テンプレートを使用してクラスの演算子をオーバーロードするにはどうすればよいですか?

分類Dev

C ++テンプレート演算子をオーバーロードしてプライベートプロパティにアクセスする方法

分類Dev

フレンド関数を使用してテンプレートクラスの外部で演算子==をオーバーロードする方法は?

分類Dev

演算子のオーバーロードを使用して2つのベクトルを追加する

分類Dev

クラスとintパラメータをテンプレートとして使用するC ++オーバーロード演算子+

分類Dev

テンプレートクラスを使用したC ++での演算子のオーバーロード

分類Dev

演算子<<をオーバーロードしてリストを表示する方法

分類Dev

テンプレートクラスで[]演算子をオーバーロードする問題

分類Dev

演算子のオーバーロードでconst参照を使用してフレンド関数を使用する

分類Dev

演算子のオーバーロードを使用して配列のユニオンを取得するには?

分類Dev

オーバーロードされた演算子を使用してパッケージをビルドする

分類Dev

テンプレートを使用せずに乗算演算子をオーバーロードする

分類Dev

Elixir演算子のオーバーロード:マクロを使用して排他範囲を定義する

分類Dev

非型パラメータを持つC ++テンプレートクラス:割り当て演算子をオーバーロードする方法は?

分類Dev

オーバーロードされた演算子を使用して別の演算子のオーバーロードを実装しても大丈夫ですか?

分類Dev

C ++で演算子オーバーロードを使用してテンプレートを使用することは可能ですか?

分類Dev

C ++:キーワード演算子を使用してメンバーのコンストラクター関数をオーバーロードします

分類Dev

&演算子は、演算子のオーバーロードで使用されると何をしますか?

分類Dev

[]および=演算子をオーバーロードして、C ++でテンプレートクラスの値を受け入れる

分類Dev

演算子のオーバーロードを使用して、2つの分数の加算を単純化する方法は?

分類Dev

テンプレートクラスに演算子のオーバーロードを実装するにはどうすればよいですか?

分類Dev

c ++-テンプレートクラスでオーバーロードするフレンド演算子

分類Dev

テンプレート演算子[]が奇妙なC2676をオーバーロードしています

分類Dev

クラスコンストラクター内でオーバーロードされた>>演算子を使用して初期化する

分類Dev

<<演算子をオーバーロードして ""を "\ n"に変更します

分類Dev

ostreamでstd :: endlを使用する '<<'-バリアントメンバーを含む可変個引数テンプレートクラスでの演算子のオーバーロードにより、コンパイラエラーが発生する

分類Dev

代入演算子のオーバーロードを使用してクラスからjobjectを返す

Related 関連記事

  1. 1

    オーバーロードされた演算子を使用してコンストラクターを追加する

  2. 2

    テンプレート関数を使用してベクトルに要素を追加するために<<演算子をオーバーロードする方法は?(c ++)

  3. 3

    汎用テンプレートを使用してクラスの演算子をオーバーロードするにはどうすればよいですか?

  4. 4

    C ++テンプレート演算子をオーバーロードしてプライベートプロパティにアクセスする方法

  5. 5

    フレンド関数を使用してテンプレートクラスの外部で演算子==をオーバーロードする方法は?

  6. 6

    演算子のオーバーロードを使用して2つのベクトルを追加する

  7. 7

    クラスとintパラメータをテンプレートとして使用するC ++オーバーロード演算子+

  8. 8

    テンプレートクラスを使用したC ++での演算子のオーバーロード

  9. 9

    演算子<<をオーバーロードしてリストを表示する方法

  10. 10

    テンプレートクラスで[]演算子をオーバーロードする問題

  11. 11

    演算子のオーバーロードでconst参照を使用してフレンド関数を使用する

  12. 12

    演算子のオーバーロードを使用して配列のユニオンを取得するには?

  13. 13

    オーバーロードされた演算子を使用してパッケージをビルドする

  14. 14

    テンプレートを使用せずに乗算演算子をオーバーロードする

  15. 15

    Elixir演算子のオーバーロード:マクロを使用して排他範囲を定義する

  16. 16

    非型パラメータを持つC ++テンプレートクラス:割り当て演算子をオーバーロードする方法は?

  17. 17

    オーバーロードされた演算子を使用して別の演算子のオーバーロードを実装しても大丈夫ですか?

  18. 18

    C ++で演算子オーバーロードを使用してテンプレートを使用することは可能ですか?

  19. 19

    C ++:キーワード演算子を使用してメンバーのコンストラクター関数をオーバーロードします

  20. 20

    &演算子は、演算子のオーバーロードで使用されると何をしますか?

  21. 21

    []および=演算子をオーバーロードして、C ++でテンプレートクラスの値を受け入れる

  22. 22

    演算子のオーバーロードを使用して、2つの分数の加算を単純化する方法は?

  23. 23

    テンプレートクラスに演算子のオーバーロードを実装するにはどうすればよいですか?

  24. 24

    c ++-テンプレートクラスでオーバーロードするフレンド演算子

  25. 25

    テンプレート演算子[]が奇妙なC2676をオーバーロードしています

  26. 26

    クラスコンストラクター内でオーバーロードされた>>演算子を使用して初期化する

  27. 27

    <<演算子をオーバーロードして ""を "\ n"に変更します

  28. 28

    ostreamでstd :: endlを使用する '<<'-バリアントメンバーを含む可変個引数テンプレートクラスでの演算子のオーバーロードにより、コンパイラエラーが発生する

  29. 29

    代入演算子のオーバーロードを使用してクラスからjobjectを返す

ホットタグ

アーカイブ