我一直在尝试将函数作为构造函数的参数传递,但是编译器似乎将它识别为只接受整数的构造函数,而不是返回整数的函数并显示我错过的错误构造函数(一个可以接受函数的构造函数)。
有人可以解释这种行为吗?我正在使用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"
}
答案 0 :(得分:4)
您正在尝试定义名为button
的默认构造funct
。您的代码相当于:
button funct;
,这会失败,因为button
没有默认构造函数。你需要的是像
button b(funct);
此处,b
是使用单个参数构造函数构造的button
的实例。