如何正確地將引用轉換爲指針?如何正確地將引用轉換爲指針?
下面的代碼給了我下面的警告:「取得臨時地址」。
MyClass myclass;
vector<MyClass*> myClassList;
myClassList.push_back(&myclass);
MethodThatsNeedsVectorOFMyClassPointers(myClassList);
如何正確地將引用轉換爲指針?如何正確地將引用轉換爲指針?
下面的代碼給了我下面的警告:「取得臨時地址」。
MyClass myclass;
vector<MyClass*> myClassList;
myClassList.push_back(&myclass);
MethodThatsNeedsVectorOFMyClassPointers(myClassList);
你的代碼看起來像現在的方式,因爲myclass
和myClassList
有相同的壽命你不應該得到一個警告。但是,如果myClassList
會超越myclass
,你需要動態分配MyClass
:
vector<MyClass*> myClassList;
{
MyClass* myclass = new MyClass;
myClassList.push_back(myclass);
}
如果下面是更接近你實際有:
vector<MyClass*> myClassList;
{
MyClass myclass;
myClassList.push_back(&myclass);
}
然後myclass
處於閉合}
破壞,myClassList
將包含釋放內存的指針。
另外,是MyClass
多態?你真的需要在向量中存儲指針嗎?
代碼中的矢量與「myclass」一樣長。 – 2012-03-28 09:00:45
@ R.MartinhoFernandes因爲他得到了警告,我猜這不是他的實際代碼 - 請參閱'MethodThatsNeedsVectorOFMyClassPointers'。 – 2012-03-28 09:01:32
你猜測「現在的方式(OP)」的警告是正確的?很好,這解釋了警告。但是你也猜測他實際上需要動態分配,而不僅僅是'vector
嗯,不,他的代碼沒有給出警告。 – 2012-03-28 08:58:18
爲什麼你需要存儲一個指針而不是僅僅使用引用? – Matt 2012-03-28 08:58:42
這段代碼對我來說看起來不錯,除非你在'myClass'被銷燬後嘗試使用vector。 – Naveen 2012-03-28 08:59:58