问题:
我正在尝试在编译期间将一个类的实例插入到std::map中,但总是得到以下错误。
main.cpp:18:12: error: ‘_info’ was not declared in this scope
_info(1)
^
第18行指向下面的代码块
15. std::map<std::string, Info > lookup {
16. {
17. "aclk",
18. _info(1)
19. }
20. };
代码:
#include <random>
#include <iostream>
#include <functional>
#include <map>
class Info{
int _info;
public:
Info(int info){
_info = info;
}
};
std::map<std::string, Info > lookup {
{
"aclk",
_info(1)
}
};
int main()
{
//dummy
}
观察:
当我动态创建对象时,我不会看到任何此类错误。
const std::map<std::string, Info > lookup {
{
"aclk",
new Info(1)
}
};
但是,对于被声明为 const
的 map 对象,使用 new
插入实例是毫无意义的。
lookup
不是Info
的成员函数,因此它不知道任何名为_info
的东西。如果您想创建类型为Info
的对象,则应使用该名称:{"aclk",Info(1)}
。 - BoBTFish{ "aclk", Info(1) }
或者简单地{ "aclk", 1 }
呢? - 0x5453