【发布时间】:2019-04-19 14:01:36
【问题描述】:
我希望能够根据从文件中读取的数据调用函数。 因此,对于每种项目类型,我想调用所需的读取器方法。 我写了这段代码,但它没有编译我想向地图添加函数指针的地方。怎么了?
#include <vector>
#include <map>
#include <iostream>
class reader
{
std::map< std::string, void(*)()> functionCallMap; // function pointer
void readA(){ std::cout << "reading A\n";};
void readB(){ std::cout << "reading B\n";};;
public:
reader()
{
*functionCallMap["A"] = &reader::readA;*
*functionCallMap["B"] = &reader::readB;*
}
void read()
{
auto (*f) = functionCallMap["A"];
(*f)();
}
};
我正在 Constructor 填充地图。
【问题讨论】:
-
指向非成员函数的指针与指向成员函数的指针不同。最大的区别是成员函数需要调用对象。您可以改用
std::function和lambda expressions 或std::bind来解决它。