命名空间作用
命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突;
如解决问题:【异常】间接寻址级别不同
C++中,命名空间使用namespace来声明,并使用{ }来界定命名空间的作用域,例如:
namespace func{
int age=18;
}
标准命名空间
C++中标准命名空间std,std 是 standard 的缩写,意思是“标准命名空间”;C++标准库中的函数或者对象都是在命名空间std中定义的;
Qt中有自带namespace:新建一个带窗体的项目都可以看到;
namespace Ui { class MainWindow; }
使用命名空间
1、在程序头部引用命名空间,如:
using namespace std;
2、在引用变量或方法时加上命名空间,如:
SpaceA::ToolA::Func1();
Qt自定义命名空间
1、使用namespace 及{ }来界定命名空间的作用域;
2、编写变量方法;
3、引用时使用 using namespace xxx 引用此命名空间;
示例如下:
ToolA.h
#ifndef TOOLA_H
#define TOOLA_H
#include
namespace SpaceA {
class ToolA : public QObject
{
Q_OBJECT
public:
explicit ToolA(QObject *parent = nullptr);
static void Func1();
static void Func2();
static void Func3();
static void Func4();
};//class
}//namespace
#endif // TOOLA_H
ToolA.cpp
#include “toola.h”
#include
namespace SpaceA {
ToolA::ToolA(QObject *parent) : QObject(parent)
{
}//class
void ToolA::Func1()
{
qDebug() << “ToolA Func1”;
}
void ToolA::Func2()
{
qDebug() << “ToolA Func2”;
}
void ToolA::Func3()
{
qDebug() << “ToolA Func3”;
}
void ToolA::Func4()
{
qDebug() << “ToolA Func4”;
}
}//namespace
MainWindow.cpp中引用
#include “mainwindow.h”
#include “ui_mainwindow.h”
//using namespace SpaceA; //此处引用namespace后 无需在每次调用前加SpaceA
-
MainWindow::MainWindow(QWidget *parent)
- QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
SpaceA::ToolA::Func1();//头部引用namespace后 无需在每次调用前加SpaceA
SpaceA::ToolA::Func2();
SpaceA::ToolA::Func3();
SpaceA::ToolA::Func4();
ToolB::Func1();
ToolB::Func2();
ToolB::Func3();
ToolB::Func4();
}