gpt4 book ai didi

c++ - 在两个不同的头文件中声明相同的命名空间,然后将它们包含在一个 cpp 中

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:49 24 4
gpt4 key购买 nike

Holla,在 QtCreator 自动生成的 Qt 5 项目文件中,在两个单独的 header 中声明了一个名为 Ui 的命名空间,并且它们都包含在一个 cpp 文件中

//mainwindow.h
namespace Ui {
class MainWindow;
}



//ui_mainwindow.h
namespace Ui {
class MainWindow: public Ui_MainWindow {};
int x;
}


//mainwindow.cpp
#include "ui_mainwindow.h"
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

}

我想知道命名空间会发生什么?它是否合并,为什么这不被视为 Class MainWindow 的重新定义?提前致谢。

感谢您的回答,我找到了这个 article关于 header 包括

最佳答案

  1. 合并。

  2. 第一个 class MainWindow; 是一个前向声明,它非常有意;它用于告诉编译器“有一个这样命名的类,稍后我将定义它”。

    它很有用,因为前向声明允许您在没有完整的类定义的情况下声明指针和引用,从而允许您打破类之间的依赖循环,并在不需要时保留要包含的 header 。前向声明稍后(可选)由通常的完整类定义替换。

关于c++ - 在两个不同的头文件中声明相同的命名空间,然后将它们包含在一个 cpp 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21081132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com