您的位置:首页 > 其它

namespace命名空间成员类的声明

2013-05-21 01:08 309 查看
namespace命名空间成员类的声明

这其实是QT空项目的架构!!

[user:test] ls

class.h main.cpp pub.cpp pub.h


[user:test] cat class.h

/// @file class.h
/// @brief
/// @author EastonWoo
/// 0.01
/// @date 2013-05-21

#include <stdio.h>

class pub
{
public:
pub()
{
printf("pub\n");
}
};

namespace UI
{
class myClass : public pub {}; //花括号不可少,否则报以下错误:
//class.h:20:11: error: forward declaration of ‘class UI::myClass’
}


[user:test] cat pub.h

// @file pub.h
/// @brief
/// @author EastonWoo
/// 0.01
/// @date 2013-05-21

namespace UI
{
class myClass;  //命名空间成员(myClass)声明。这样class.h就可以不用编译进来了。
//好处在于:如果class.h经常要修改。pub.h就基本不用变了。
//这里的UI::myClass 和 下面的class myClass是两个不一样的类,
//他们在内存中的存放的位置是两个地方,一个在命名空间里,另一个
//在全局空间里。
}

class myClass
{
public:
myClass();
UI::myClass * ui;
};


[user:test] cat pub.cpp

/// @file pub.cpp
/// @brief
/// @author EastonWoo
/// 0.01
/// @date 2013-05-21

#include <stdio.h>
#include "pub.h"
#include "class.h"

myClass::myClass()
{
ui = new UI::myClass;
printf("myClass\n");
}


[user:test] cat main.cpp

/// @file main.cpp
/// @brief
/// @author EastonWoo
/// 0.01
/// @date 2013-05-21

#include <stdio.h>
#include "pub.h"

int main()
{
myClass my;
return 0;
}


编译运行:

[user:test] g++ -c pub.cpp

[user:test] g++ main.cpp pub.o

[user:test] ls

a.out* class.h main.cpp pub.cpp pub.h pub.o

[user:test] ./a.out

pub

myClass

[user:test]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: