2016-06-10 80 views
0

我想要具有相同名称但使用不同名称空间的函数。我宣布在命名空间中的函数:名称空间中的函数

GPS.cpp

namespace NSpace_IMUandGPS 
{ 
//Read GPS Data Set Raspberry Pi's Time and date 
void ReadGPS(FD &Fd, bool &GPSready, bool &TimeConfigured, S_POS &POS, S_GPS&GPS, S_IMU &IMU, double &Velocity) 
{ 
... 
} 

}

GPS.h

namespace NSpace_IMUandGPS 
{ 
void ReadGPS(FD &Fd, bool &GPSready, bool &TimeConfigured, S_POS &POS, S_GPS &GPS, S_IMU &IMU, double &Velocity); 
} 

Main.cpp的

我想在main中使用未在NSpace_IMUandGPS命名空间中声明的结构。那么,我该怎么做?如果我在名称空间中声明函数,是否所有变量都必须在相同的名称空间中定义?

回答

0

您不需要在该名称空间中定义在特定名称空间中使用的东西。

您的namespace NSpace_IMUandGPS将成为全局无名称命名空间的一部分。因此,如果功能ReadGPS中使用的structs不在任何其他名称空间内,那么在函数ReadGPS内部访问它们时不会发现任何问题。

你可以调用函数中main如下:
NSpace_IMUandGPS::ReadGPS(/*all the required parameters*/);

一般来说,如果variables/functions没有任何namespace那么他们可以通过自己的名字本身就可以使用里面定义。

如果variables/functions在某些namespace内部定义,那么在使用它们时需要指定namespace

例如:

struct XYZ 
{ 
    int c; 
}; 
namespace ABC 
{ 
    int a; 
    struct PQR 
    { 
     int b; 
    }; 
    Func_1(XYZ st1, PQR st2); 
} 

Func_2(XYZ st1, ABC::PQR st2); 

struct XYZ and Func_2是全球无名namespace的一部分。 int a and struct PQRnamespace ABC的一部分。

现在如果你看到Func_1可以访问struct XYZ,即使它没有在namespace ABC里面定义。这是因为namespace ABC本身就是全球无名的namespace的一部分。

但是,如果一个函数这是目前在全球无名namespaceFunc_2()然后序里面使用namespace ABC的事情,你需要指定的namespaceABC::PQR名称。

1

您可以使用::运算符来处理命名空间。 语法:namespace::function();

所以,如果你wannt给你,例如std名称空间中使用:
std::merge();
,如果你想使用你的代码中使用:
NSpace_IMUandGPS:ReadGPS();

相关问题