Я пытаюсь получить доступ к объекту (называемому вектором), на который указывает указатель, содержащийся в векторном контейнере, но я не могу добраться до него.
Вот важные фрагменты кода:
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, базовый класс Vectors.
Я все об этом не так?Я пытаюсь содержать все элементы производного класса в статическом члене данных базового класса, используя вектор указателей на основной класс.
Мой вывод из 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)'
Почему я не могу разыменовать этот указатель?