我是C ++的新手,有点难过。我正在尝试在类的初始化时向std::map
添加数据,但问题是我正在尝试添加正在创建的类的实例。
例:
namespace Test
{
inline std::map<std::string, Doodad> testMap;
class Doodad
{
public:
Doodad(std::string test)
{
testMap["qwe"] = this;
}
};
}
现在这种情况不会起作用,因为Doodad
没有被定义,所以我尝试了一些更多的hacky(可能是一个可怕的,可怕的想法,但我只是在玩它并学习如何工作)。
namespace Test
{
class Hack
{
public:
Hack() {};
};
inline std::map<std::string, Hack> testMap;
class Doodad: public Hack
{
public:
Doodad(std::string test) : Hack()
{
testMap["qwe"] = this;
}
};
}
任何帮助,将不胜感激
只需先定义类,然后声明变量,然后定义函数:
class Doodad
{
public:
Doodad(std::string);
};
inline std::map<std::string, Doodad> testMap;
Doodad::Doodad(std::string) {
testMap.emplace("qwe", *this);
}
附: this
是一个指针,因此您无法将其添加到值不是指针的地图中。此外,你不能使用地图的operator[]
,因为Doodad
不是默认的可构造的。