c++ - 在指向对象的指针 vector 中取消引用

标签 c++ pointers reference vector dereference

我正在尝试访问 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/

相关文章:

c++ - 在不先构建数组的情况下将数字列表传递给 C++ 中的函数?

c++ - 函数参数上的 "attempting to reference a deleted function"

c++ - 使用非指针数据成员 move 语义

jquery - 有 AJAX 引用吗? ajaxSubmit() 的作用是什么?它内置于 jQuery 中吗?

c++ - 运行 C++ 程序需要什么?

c++ - 是否保证 char 以外的任何类型?

char指针值重新分配

c - 从链表开头删除

java - 该方法和构造函数似乎作用于两个不同的传入/存储变量

c++ - 引用范围外的数组