c++ - 包含类函数的 vector

标签 c++ vector

我目前正在尝试创建一个包含类函数的 vector 。

这是我的代码:

typedef leap::float64 (DataReader::*getFonction)();

std::vector<getFonction> vec;
std::vector<getFonction>::iterator it;

vec.push_back(&DataReader::getLa);
vec.push_back(&DataReader::getLon);

for(it = vec.begin(); it<vec.end(); it++)
    std::cout << *it << std::endl;

函数“get ...”(不是静态的)返回值存储在共享资源上并且已经初始化。 但是,他们只返回值“1”。

一个想法?

最佳答案

当您取消引用 it 并输出它时,您只是打印出函数指针的表示,它被隐式转换为 bool 并输出为 1 因为它不为空。

如果要调用函数并输出返回值,需要在实例上调用:

DataReader reader;

for(it = vec.begin(); it<vec.end(); it++)
    //dereference it to get member function pointer and call it on reader
    std::cout << (reader.*(*it))() << std::endl;

如果您使用的是 C++11,std::function 可能更适合:

using getFunction = std::function<leap::float64(DataReader&)>;

std::vector<getFunction> vec;
std::vector<getFunction>::iterator it;

vec.emplace_back(&DataReader::getLa);
vec.emplace_back(&DataReader::getLon);

DataReader reader;
for(it = vec.begin(); it<vec.end(); it++)
    std::cout << (*it)(reader) << std::endl;

关于c++ - 包含类函数的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31989894/

相关文章:

c++ - 有没有更快的方法可以在std::vector中插入元素

arrays - Openscad 位于数组或等效数组中

vector - openlayers 从特征中获取图层

c++ - 对于什么 T `std::declval<T>()` 没有匹配函数?

c++ - Visual C++ CRT调试

c++ - vector 中的不可复制元素

apache-flex - 泛型(向量)如何在 AVM 中工作?

c++ - 将 csv 文件的一行拆分为 std::vector?

c++ - 复制抽象基类的对象

c++ - 使用 Boost::Spirit 解析时出现段错误