2

从 in 指针中使用方法的最佳方法是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只是一些带有returnANumber()返回任意双精度的方法的任意类。

我的编译器目前说

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

我应该使用mem_fun或其他类似的魔法吗?

4

1 回答 1

1

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

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

我不知道它是否有效 if randomGenis aboost::shared_ptr<RandomGenerator>但它确实适用于 a std::shared_ptr<RandomGenerator>。这假设当前的 C++(即 2011 年的修订版)。我希望使用 C++03 与 Boost 进行类似的工作。

于 2013-11-07T21:00:30.747 回答