0

我正在尝试获取指向我的对象实例的函数的指针。这是我的代码:

#include <iostream>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <numeric>

using namespace std;

class Dice {
    int face;
public:
    Dice () {
        face = rand() % 6 + 1;
    }
    int roll() {
        face = rand() % 6 + 1;
        return face;
    }
};

int main()
{
    Dice mydice;
    vector<int> v(1000);
    generate(v.begin(),v.end(),mydice.roll);
}

我的编译器在生成行用神秘的消息向我咆哮=)请指出如何正确地告诉 generate 调用mydice.roll()以填充向量v

4

2 回答 2

3

给它一个对象:

generate(..., std::bind(&Dice::roll, &mydice));

std::bindis in<functional>并绑定参数,以便可以在不提供参数的情况下调用函数。

于 2013-03-30T02:16:22.523 回答
1

另一种可能的方法:使用 () 运算符将您的骰子类本身定义为函数。将其包含在您的课程中:int operator()() { return roll(); },然后您可以简单地使用generate(v.begin(),v.end(), mydice);.

于 2013-03-30T10:13:43.950 回答