ベクター コンテナーに保持されているポインターが指すオブジェクト (ベクターと呼ばれる) にアクセスしようとしていますが、アクセスできないようです。
重要なコード スニペットを次に示します。
int main{
Vector<double>* test = new Vector<double>(randvec<double>());
test->save();
cout << Element::vectors[0];
return 0;
}
はテンプレートVector
クラスで、ベクトルへのrandvec<T>()
参照を返します。save()
template <class T>
void Vector<T>::save()
{
vectors.push_back(this);
}
ベクトルは、ベクトルstatic std::vector<Element*> vectors;
の基本クラスである Element.h で定義されます。
私はこれについてすべて間違っていますか?メイン クラスへのポインターのベクトルを使用して、基本クラスの静的データ メンバーに派生クラスのすべての要素を含めようとしています。
main() からの私の出力は、何が起こっているかを教えてくれるかもしれません – 私はポインタを取得します0x1001000a0
。ただし、そのポインターを逆参照しようとすると、次のエラーが発生します。
error: no match for 'operator<<' in 'std::cout << * Element::vectors.
std::vector<_Tp, _Alloc>::operator[] [with _Tp = Element*, _Alloc = std::allocator<Element*>](0ul)'
このポインターを逆参照できないのはなぜですか?