如果有人问过这个问题,我深表歉意,我不确定如何用最好的词来形容它,也找不到它。
我基本上有一个类,我想维护一个自身的映射,并且该列表应该具有该对象的唯一实例。
using std::unordered_map;
class MyClass
{
~MyClass() {};
MyClass() {}; // these actually contain code which operate on the classes data
static unordered_map<Uint32, MyClass> list;
public:
static const MyClass& GetObject(Uint32 key) {return list[key];};
};
当我编译我的代码时,它基本上给了我一堆来自 STL 的错误,说它正在调用已删除的函数等,这是有道理的,因为 unordered_map 可能使用构造函数和析构函数,所以我将 unordered_map 声明为朋友
friend class unordered_map<Uint32, MyClass>;
然而,似乎没有更少的错误,我推测这是由于 unordered_map 使用的类,如pair和hash。所以我的问题是是否有替代方案。我应该只声明更多似乎从编译器中出错的朋友,还是有另一种方法?