【发布时间】:2011-12-08 16:00:10
【问题描述】:
我有一个自定义类作为地图中的键。当我尝试在地图中插入一个项目时,程序终止。密钥的创建肯定有问题。
class MyKey {
char* data;
bool operator<(const MyKey& s) const {
for(int i = 0; i < (int)(sizeof(data)/sizeof(char)); i++) {
if(data[i] > s.data[i])
return false;
}
return true;
}
}
map<MyKey, char>* map = new map<MyKey, char>;
MyKey* key = new MyKey(...);
map->insert(make_pair(*key, '0'));
程序在插入时终止。
【问题讨论】:
-
能否贴出
MyKey::operator<()的实现和MyKey的定义(需要看成员变量和复制构造函数和赋值运算符)。 -
我在密钥类中添加了一些信息
-
MyKey 中有复制构造函数吗?实现方式是什么?
-
是否需要复制构造函数?
-
在您的示例代码中,
data从不指向任何东西(并且可能未初始化)。请显示您对data所做操作的完整代码。