2011-05-12 241 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);