0

我有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;}
}

插入对象与插入整数有何不同?我能够插入整数。

4

1 回答 1

2

在您的定义中,myset持有Class1对象,c1而是指向Class1对象的指针。这就是类型问题。

要么你myset用来保存指向对象的指针 - multiset<Class1 *> myset,要么将新创建的对象复制到myset-myset.insert(*c1); delete c1;中。请注意,容器要求对象必须是可复制和可分配的,并且应该通过实现可比较operator<

于 2012-06-10T03:49:04.500 回答