我正在尝试编写一个类,该类将接收(若干)对char数组(和字符串,稍后介绍)和函数指针,我打算从中使用所需的函数。我将this question中提供的代码的修改版本用于测试目的,所以我有:
#include <iostream>
#include <map>
#include <initializer_list>
using namespace std;
class Test {
std::map<const char*, void(*)()> m_ints;
public:
Test(std::initializer_list<std::pair<const char*, void(*)()>> init):
m_ints(init)
{}
};
void testfunction(){
cout << "This is a test function"<<endl;
}
int main()
{
Test t = { {"hello", &testfunction} };
return 0;
}
使用g ++编译时,会返回错误:
error: no matching function for call to ‘std::map < const char*, void (\*)()>::map(std::initializer_list < std::pair < const char*, void (*)()> >&)’
m_ints(init)
^
和 VERY 长长的注释列表,其中包含候选内容。我在做什么错,我可以像这样初始化地图,还是应该在类中使用初始化函数?