2013-08-23 50 views
2

數組指針對象在C++中,我有對象的像這樣的數組指針:指針在QT

vector<Articulation*> artic; 

我有下一個問題。當我發送該矢量到另一個類如&時。所以我有指針,而不是所有的數組都重複。問題在於未來。在新的類,我有數組指針的對象ponter

vector<Articulation*>* pArtic; 

在新的I類做pArtic [I] - >移動()。該方法在鉸接中實施。當我執行mov()方法時,QT告訴我,類型std :: vector < _Ty>沒有運算符 - >。這是因爲,我認爲,我無法訪問關節對象,我試圖通過向量移動()。

任何人都知道我必須做什麼才能訪問鉸接對象並執行move()方法?

實施例:

類A:B

vector<Articulation*> artic; 

void A::initVector(){...} 
void A::sendInfoToB(){ 
B nuevo(); 
B.send(&artic); 
} 

類別:

vector<Articulation*>* pArtic 
void B::send(vector<Articulacion*>* art){ 
pArtic=art; 
} 
void B::sendToC() 
{ 
C nuevo(); 
C->sendTheLast(pArtic); 

} 

C類:

void C::sendTheLast(vector<Articulation*>* artic) 
{ 
string data=artic[i]->move(); 
//Move returns a String 
} 

這是示例。

+0

請提供簡單的move()方法體。 –

+0

你能否提供一個**小**示例來說明你想要做什麼並且再現問題?我無法理解你的問題。 – juanchopanza

回答

2

問題是,您正在調用pArtic的第i個位置的方法move(),它是指向矢量指針的指針。你想要做的就是調用指針在矢量位置i的方法移動。

(*pArtic)[i]->move() 

這是你想要做什麼,但照顧,這是不是真的安全我猜...

一個更好的方式是通過期待vector<>&參考放棄只有參考artic,不是指針。

+0

我不明白你的解決方案:S – Elseine

+0

,而不是調用'pArtic [i] - > move()'你調用'(* pArtic)[i] - > move()'並且它可以工作。 – Theolodis

+0

它的工作原理,謝謝!但我有一個問題,爲什麼它有效?我不明白。 – Elseine

0

將QT對象直接存儲在容器上(除非真正需要使用指針)。這是因爲QT實現了隱式共享和COW(寫時複製),可以在每次通過容器時消除容器的複製開銷。通過根據需要通過值或參考來傳遞容器,使得界面更簡單且易於使用。

同樣,如果你有更好的機制(如智能指針),在C++中使用原始指針總是很危險。智能指針使您的程序異常安全,同時管理原始指針的生命。