ベクトルに値とが含まれv[i]
ていることを使用して値を追加する関数が必要です。operator+
v
10,2
3
#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
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]
コメントを追加