ベクターに格納できるクラスについて質問があります。ベクトルに格納できる要件は何ですか? そのようなクラスには代入演算子が必要なようです。しかし、それだけかどうかはわかりません。
例を挙げましょう。クラス A には const int メンバーがあります。operator = を書かないとコンパイルされません。しかし、この例では、この演算子は何もしません。このプログラムは、10 と 20 を正しく表示します。演算子 = が必要なようですが、実際には使用されていません。
#include <iostream>
#include <vector>
class A {
public:
A(int a) : a_(a) {}
A& operator =(const A& a2) { return *this;} // Without this, compile fails.
void print() const {
std::cerr << a_ << std::endl;
}
private:
const int a_;
};
int main(int argc, char** argv) {
std::vector<A> v;
v.push_back(A(10));
v.push_back(A(20));
for (const A& a : v) a.print();
}