问题遇到的现象和发生背景
给所有.hpp
都加了保护机制,但仍然显示多次定义。
问题相关代码
#ifndef UI_MAINWINDOW_HPP
#define UI_MAINWINDOW_HPP
#include <QtCore/QString>
#include <QtCore/QSize>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMessageBox>
#include <QtGui/QAction>
#include <QtGui/QCloseEvent>
namespace dm::ui{
class MainWindow : protected QMainWindow {
Q_OBJECT
public:
// ...
MainWindow();
~MainWindow();
void closeEvent(QCloseEvent *event);
inline void show();
protected:
// ...
};
MainWindow::MainWindow() {
// ...
}
MainWindow::~MainWindow() {
// ...
}
void MainWindow::closeEvent(QCloseEvent *event) {
// ...
}
inline void MainWindow::show() {
this->QMainWindow::show();
}
}
#endif // UI_MAINWINDOW_HPP
运行结果及报错内容
... error: multiple definition of `dm::ui::MainWindow::MainWindow()'; debug/main.o:... first defined here
有n条这样的报错……
我的解答思路和尝试过的方法
难道必须把实现放在.cpp
里吗?这并不优雅。
我想要达到的结果
解决这些报错。