C++ 如何初始化此填充了&;的数组;功能性;功能B?
我正忙于初始化此阵列:C++ 如何初始化此填充了&;的数组;功能性;功能B?,c++,arrays,eclipse,gcc,avr,C++,Arrays,Eclipse,Gcc,Avr,我正忙于初始化此阵列: int menuNumber2FunctionDbase[]= { &functionA , &functionB , &functionC }; 但它给出了:接近初始化的menuNumber2FunctionDbase 和:从不兼容的指针类型初始化 我尝试了int*和functionA而不是&functionA 我做错了什么?如果函数a(B,C)是返回int且不带参数的函数,则需要声明数组以具有有效类型: int (*menuNumber2F
int menuNumber2FunctionDbase[]= { &functionA , &functionB , &functionC };
但它给出了:接近初始化的menuNumber2FunctionDbase
和:从不兼容的指针类型初始化
我尝试了int*
和functionA
而不是&functionA
我做错了什么?如果
函数a
(B
,C
)是返回int
且不带参数的函数,则需要声明数组以具有有效类型:
int (*menuNumber2FunctionDbase[])() = { functionA, functionB, functionC };
您可以这样调用functionB
:
std::cout << menuNumber2FunctionDbase[1]() << std::endl;
typedef void (*void_funct)(void);
void_funct menuNumber2FunctionDbase[] = { functionA, functionB, functionC };
编辑
由于函数a
(B
,C
)是不返回值且不带参数的函数,因此typedef应如下所示:
std::cout << menuNumber2FunctionDbase[1]() << std::endl;
typedef void (*void_funct)(void);
void_funct menuNumber2FunctionDbase[] = { functionA, functionB, functionC };
如果不使用typedef
,数组声明应为:
void (*menuNumber2FunctionDbase[])(void) = { functionA, functionB, functionC };
如果
函数a
(B
,C
)是返回int
且不带参数的函数,则需要声明数组的有效类型:
int (*menuNumber2FunctionDbase[])() = { functionA, functionB, functionC };
您可以这样调用functionB
:
std::cout << menuNumber2FunctionDbase[1]() << std::endl;
typedef void (*void_funct)(void);
void_funct menuNumber2FunctionDbase[] = { functionA, functionB, functionC };
编辑
由于函数a
(B
,C
)是不返回值且不带参数的函数,因此typedef应如下所示:
std::cout << menuNumber2FunctionDbase[1]() << std::endl;
typedef void (*void_funct)(void);
void_funct menuNumber2FunctionDbase[] = { functionA, functionB, functionC };
如果不使用typedef
,数组声明应为:
void (*menuNumber2FunctionDbase[])(void) = { functionA, functionB, functionC };
解决了!你们太棒了 我改变的是:
void(*menuNumber2FunctionDbase[])()={functieA,functieB,functieC}代码>
使用typdef的另一个选项也很不错,但给出了一个警告:(接近“menuNumber2FunctionDbase[2]”的初始化)
工作起来很有魅力!非常感谢 解决了!你们太棒了
我改变的是:void(*menuNumber2FunctionDbase[])()={functieA,functieB,functieC}代码>
使用typdef的另一个选项也很不错,但给出了一个警告:(接近“menuNumber2FunctionDbase[2]”的初始化)
工作起来很有魅力!非常感谢 您可以使用,然后您不仅可以使用全局独立函数,还可以使用C++11 lambdas或(在帮助下)成员函数
std::function<void()> menuNumber2FunctionDbase[] = {
functieA, functieB, functieC
};
std::函数menuNumber2FunctionDbase[]={
functieA,functieB,functieC
};
您可以使用,然后您不仅可以使用全局独立函数,还可以使用C++11 lambda或(在帮助下)成员函数
std::function<void()> menuNumber2FunctionDbase[] = {
functieA, functieB, functieC
};
std::函数menuNumber2FunctionDbase[]={
functieA,functieB,functieC
};
什么是功能
?指向返回int
的函数的指针?我不知道&function
是什么,但它显然不是int
。您需要告诉我们functionA是什么,以及您实际想要实现什么。functionA初始化为:void function(void){some_test_code};它可能与被调用函数的无效性有关,什么是function
?指向返回int
的函数的指针?我不知道&function
是什么,但它显然不是int
。您需要告诉我们functionA是什么,以及您实际想要实现什么。functionA初始化为:void function(void){some_test_code};这可能与被调用函数的无效有关?我建议在回答中使用typedef:typedef int(*funct)(参数)代码>这是为了更好的可读性…我会添加注释,谢谢!我建议在回答中使用typedef:typedefint(*funct)(参数)代码>这是为了更好的可读性…我会添加注释,谢谢!你应该接受他的回答,而不是贴出你自己的答案的副本;我很感谢你们的帮助和见解。然后说明我已经实现了他的解决方案,以及如何实现。可能对其他人有帮助。这怎么会是一个副本?你可以通过评论对你有帮助的答案来做到。你应该接受他的答案,而不是发布你自己的副本。不太明白;我很感谢你们的帮助和见解。然后说明我已经实现了他的解决方案,以及如何实现。可能对其他人有帮助。这怎么会是重复的?你可以通过评论有帮助的答案来做到这一点。不知道这是否可行:为AVR atmega644 mcu的Eclipse Keppler工作…不知道这是否可行:为AVR atmega644 mcu的Eclipse Keppler工作。。。