我试图访问指向一个矢量容器中的指针指向的对象(称为矢量),但我似乎无法得到它。解引用指向对象的指针
以下是重要的代码片段:
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;
。 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)'
为什么我不能解引用这个指针?
为什么动态分配,在所有? (提示:你正在泄漏!) – GManNickG 2010-06-22 06:52:38
我花了三次阅读你的描述来了解你的名字的不同部分是如何相互纠缠的!这是否真的需要两阶段建设?如果所有对象都要存储在基类静态数据成员中,为什么不将它们存储在构造函数中?你为什么使用'test'的动态分配?你在泄漏它。自动对象有什么问题?哦,在C++'file!= class'中。 – sbi 2010-06-22 07:17:44