C++ 从指针生成函数

标签 c++ function methods stl

STL::generate 中使用指针方法的最佳方式是什么?一个例子:

std::vector<double> doSomethingToAVector(boost::shared_ptr<RandomGenerator> randomGen){
    std::vector<double> output(100);
    std::generate(output.begin(), output.end(), randomGen->returnANumber());
    return output;
}

RandomGenerator 只是一些带有返回任意 double 值的方法 returnANumber() 的任意类。

我的编译器目前说

  called object type 'double' is not a function or function pointer
    *__first = __gen(); 

我应该使用 mem_fun 还是其他类似的魔法?

最佳答案

您可以使用 std::bind()绑定(bind)隐式对象参数。例如:

std::generate(output.begin(), output.end(),
              std::bind(&RandomGenerator::returnANumber, randomGen));

我不知道它是否有效 randomGenboost::shared_ptr<RandomGenerator>但它确实适用于 std::shared_ptr<RandomGenerator> .这假定当前的 C++(即 2011 年的修订版)。我希望使用 C++03 的 Boost 也能有类似的功能。

关于C++ 从指针生成函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19846477/

相关文章:

c++ - 如何修复 Visual Studio 2015 Preview 上 Unresolved SDL 2.0.3 外部问题?

c++ - Opencv:使用运算符<<将数据保存为原始数据时,将数据从文件读取到矩阵

javascript - 我怎样才能让我的功能按计划运行?我的逻辑有错吗? (长的)

c++ - 如何从另一个对象分配给指针函数数组?

java - 如何在java方法中使用动态代码?

c++ - 可能会失败的 "post-initialization"的 eps 解析器

python - 使用 functools 的装饰器和不使用 functools 的装饰器有什么区别?

Java如何强制使用对象的程序员指定带有值的特定属性名称?

python - 断点法的使用

指向数组指针的 C++ 指针