首页 > 解决方案 > 指向 MainWindow 函数的指针数组导致“不应忽略的无效值”

问题描述

我正在尝试创建一个指向 MainWindow 函数的指针数组,因为我需要循环并自动执行与我的按钮和微调框关联的所有函数。这是示例代码:

typedef void (*f_pointer)();

void MainWindow::on_test_spinBox_valueChanged(int a){
ui->label->setNum(a);
}

void MainWindow::on_test_pushButton_clicked() {
int a = 1 + 2;
}

void MainWindow::on_test2_pushButton_clicked() {
int a = 2 + 3;
}

void MainWindow::on_run_all_pushButton_clicked() {
f_pointer array[]  = { MainWindow::on_test_spinBox_valueChanged(), MainWindow::on_test2_pushButton_clicked(), MainWindow::on_test_pushButton_clicked() };

for (int i = 0; i < 2; i++)
array[i];
}

所有这些都会导致错误: void 值没有被忽略,因为它应该被忽略。

你能帮我吗?谢谢。

标签: c++qt

解决方案


主要错误(报告的)是,在您的初始化列表中,您调用了三个函数,而不是它们的地址。您应该删除函数名称后的括号以指定这些函数的地址而不是它们的返回值。但请注意:这只能对static类成员函数进行;对于非静态成员函数,语法更复杂:通过函数指针调用 C++ 类方法

此外,列表中的第一个函数没有正确的签名,因为它的地址是一个f_pointer,因为它有一个int a参数。


推荐阅读