コンテナクラスを作成し、それがどのように動作し、どのように使用できるかを知るために、ポインタと組み合わせてnewキーワードを使用しました。演算子のオーバーロードと設定値
template<typename T>
class Container {
private:
T value;
public:
Container(T value) {
this->value = value;
}
Container() {
}
virtual ~Container() {
}
T getValue() {
return value;
}
void setValue(T value) {
this->value = value;
}
void operator[](T value) {
this->value = value;
}
};
int main() {
std::vector<Container<int>*> arr(10);
for (int i = 0; i < 10; i++) {
Container<int> *a = new Container<int>;
a->setValue(i);
// a[i];
arr[i] = a;
std::cout << arr[i]->getValue() << std::endl;
delete a;
}
return 0;
}
[]
オペレータはsetValue()
と同じコードを有しているが、私はa->setValue(i)
を使用し、a[i]
を使用してそれだけで乱数を印刷する場合にのみ0から9までの数字を印刷します。どうして?
私はあなたが読んでお勧めします[この標準的な実装の参照](http://en.cppreference.com/ w/cpp/language/operators#Canonical_implementations)を使用します。あなたの[配列添字演算子オーバーロード](http://en.cppreference.com/w/cpp/language/operators#Array_subscript_operator)は間違っています。 –
添え字演算子は、そのパラメータとしてインデックスを取り、割り当てが更新する参照を返す必要があります。 – Barmar