C ++ вопрос. о контейнере и экземпляре класса - PullRequest
0 голосов
/ 13 мая 2011
A* a = new A(x,y);
set<A> aset;
aSet.insert(a);

Я сделал это.Получил ошибку.Как мне это исправить?

Спасибо !!!

Ответы [ 2 ]

7 голосов
/ 13 мая 2011

aset - это набор A, а не указателей на A. Так что либо

set<A*> aset;

, либо

aset.insert(*a);

, но не думайте, что последнее имеет слишком большой смысл.

3 голосов
/ 13 мая 2011

Вы пытаетесь вставить указатель на A в свой набор, но набор объявляется как принимающий A с.

Вы должны либо изменить свой набор, чтобы хранить указатели:

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

или создать экземпляр, а не указатель на экземпляр:

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