如果我在 mainwindow.cpp 中定义该函数,该函数可以正常工作,但是当我在 radiobuttons.cpp 中定义它并尝试从 mainwindow.cpp 中调用它时,该项目将无法编译。
主窗口.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
void build_radios(); //this function
~MainWindow();
};
#endif // MAINWINDOW_H
单选按钮.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
void MainWindow::build_radios()
{
//... some code
}
主窗口.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
void MainWindow::radio_buttons(); //error: C2761: 'void MainWindow::build_radios(void)' : member function redeclaration not allowed
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
radio_buttons();
}
最佳答案
那不是定义,编译器将其视为类定义之外的成员函数声明,这是非法的。只需删除该行。它本来就不应该存在,它没有用。
事实上,将实际定义从 radiobuttons.cpp
移至 mainwindow.cpp
以保持一致性。为什么要在不同的实现文件中声明一个 MainWindow
成员?
关于c++ - 不允许成员函数重新声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14095405/