将函数作为构造函数参数传递未正确识别

时间:2014-05-03 13:30:08

标签: c++

我一直在尝试将函数作为构造函数的参数传递,但是编译器似乎将它识别为只接受整数的构造函数,而不是返回整数的函数并显示我错过的错误构造函数(一个可以接受函数的构造函数)。

有人可以解释这种行为吗?我正在使用Visual Studio 2010。

#include<iostream>
using namespace std;

int funct() {
    return 5;
}

struct button {
    button(int (*function)()) {
        //func = function;
    }
    int (*func)();
};


int main() {
    button(funct); //Error: no default contructor exists for class "button"
}

1 个答案:

答案 0 :(得分:4)

您正在尝试定义名为button的默认构造funct。您的代码相当于:

button funct;

,这会失败,因为button没有默认构造函数。你需要的是像

button b(funct);

此处,b是使用单个参数构造函数构造的button的实例。