我正在尝试访问由 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);
}

vectors是在Vectors的基类Element.h中定义的static std::vector<Element*> vectors;

我要把这都弄错了吗?我试图通过使用指向主类的指针 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定义“<

08-19 23:26