2011-05-12 237 views
0
A* a = new A(x,y); 
set<A> aset; 
aSet.insert(a); 

我做到了。出錯了。我應該如何解決它?C++的問題。關於容器和類的實例

謝謝!!!

+2

請請請提供更多的內容(諸如錯誤消息的)比「我做了這個,得到了一個錯誤,修復它」 – Ben 2011-05-12 20:44:44

+0

如果你真的發佈了確切的錯誤信息,它可能會幫助人們知道如何開始迴應。 「一個錯誤」可能來自「編譯器吐出一條錯誤信息」到「來自電氣公司的蓋伊在門上,並憤怒地堅持我停止該程序,因爲它正在消耗電網」。 – 2011-05-12 20:45:23

+0

對不起,我的壞。我會在下次做。 – 2011-05-12 20:47:48

回答

7

ASET是一家集A的,而不是指向A.因此,無論

set<A*> aset; 

aset.insert(*a); 

但不要以爲以後做太多的感覺。

+0

是的,這有助於。謝謝! – 2011-05-12 20:47:27

+0

FWIW,我不認爲前者太有道理。指針集合是一個高級主題,它們給你一個額外的領域,讓它錯誤。首先,你的集合將被對象的*地址*而不是他們的'<'運算符排序和去重複。如果這就是你想要的,那很好,但它可能不是你想要的。在提問者的代碼中,我也看到很少有幾個叫'刪除'的電話 - 這個集合將如何清理? ;-) – 2011-05-13 00:17:00

3

您正嘗試將一個指向A的指針插入到您的集合中,但該集合被直接聲明爲A s。

必須要麼改變你的設置爲存儲指針:

A* a = new A(x,y); 
set<A*> aset; 
aSet.insert(a); 

或創建一個實例,而不是指向一個實例:

A a = A(x,y); 
set<A> aset; 
aSet.insert(a);