如何在C ++中将指针传递给类实例的函数?

时间:2013-03-30 02:14:11

标签: c++ c++11

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

#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

2 个答案:

答案 0 :(得分:3)

给它一个对象:

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

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

答案 1 :(得分:1)

另一种可能的方法:使用()运算符将dice类本身定义为函数。在您的课程中加入int operator()() { return roll(); },然后您只需使用generate(v.begin(),v.end(), mydice);调用您的生成器。