我看到Qt像这样在Ui
接口(interface)中放置了一个类:
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
...
此方法是否与将整个类包含在 namespace 中相同?当然看起来更干净。
最佳答案
不,在您的示例中Ui::MainWindow
是与全局命名空间中定义的MainWindow
类不同的类。
看哪:
namespace Ui {
class MainWindow;
}
class MainWindow
{
};
int main()
{
Ui::MainWindow mw; // fails due to incomplete type
}
由于
Ui::MainWindow
是不完整的类型,因此该代码无法编译。Qt代码很可能只是使用前向声明。您可以在 namespace 中向前声明该类,但是实际上您仍然必须在相同的 namespace 中实现该类,否则它不是同一类。