我有multiset < Class1 > myset
;
所以我创建了一个新对象:Class1* c1 = new Class1();
我希望能够myset.insert(c1)
或myset.insert(new Class1());
,但没有一个可以工作。
class Class1{
int time;
public:
CLass1(int t) : time(t) {}
bool operator<(Class1 &c2) {return time < c2.time;}
}
插入对象与插入整数有何不同?我能够插入整数。
答案 0 :(得分:2)
在您的定义中,myset
包含Class1
个对象,而c1
是指向Class1
个对象的指针。这就是类型问题。
使用myset
保存指向对象的指针 - multiset<Class1 *> myset
,或将新创建的对象复制到myset
- myset.insert(*c1); delete c1;
。请注意,容器需要对象必须是可复制和可分配的,并且应该通过实现operator<
来比较。