我正在尝试访问 vector 容器中保存的指针所指向的对象(称为 vector ),但我似乎无法访问它。
以下是重要的代码片段:
int main{
Vector<double>* test = new Vector<double>(randvec<double>());
test->save();
cout << Element::vectors[0];
return 0;
}
哪里Vector
是一个模板类,randvec<T>()
返回对 vector 的引用,save()
是
template <class T>
void Vector<T>::save()
{
vectors.push_back(this);
}
vector 是 static std::vector<Element*> vectors;
定义在 Vector 的基类 Element.h 中。
我的想法是错的吗?我试图通过使用指向主类的指针 vector 将派生类的所有元素包含在基类的静态数据成员中。
我的 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)'
为什么我无法取消引用该指针?
最佳答案
问题不在于解除引用。问题是“<<”运算符没有为 Element::vectors 定义
关于c++ - 在指向对象的指针 vector 中取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090194/