我試圖訪問指向一個矢量容器中的指針指向的對象(稱爲矢量),但我似乎無法得到它。解引用指向對象的指針
以下是重要的代碼片段:
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