在 C++ 使用 namespace

寫程式常常會碰到名稱 (類別、函式、變數 ... 等等) 衝突的問題 (因為英文懂得太少了),這個時候命名空間就可以發揮功用了,只要在自己的命名空間內,即使名稱跟別人一樣也不會衝突了。

同時在 Visual Studio 的 Class View 中,也會依據命名空間來分類,方便 Source Code 的管理。唯一的缺憾就是不能像  Net 一樣使用 "." 當作命名空間的名稱,所以只好用 "_" 來取代了!



宣告的方式是利用 namespace identifier { } 將你的程式包起來即可,包括 Header 與 C++ file 都要,例如:

Computer.h

#pragma once

namespace Hardware {
 class Computer
 {
 public:
  Computer(void);
  ~Computer(void);
 };
}

Computer.cpp

#include "StdAfx.h"
#include "Computer.h"

namespace Hardware {
 Computer::Computer(void)
 {
 }

 Computer::~Computer(void)
 {
 }
}

使用時直接 #include "Computer.h" 後就可以用範圍運算子 :: 來使用

Hardware::Computer computer;

或者

using namespace Hardware;
Computer computer;

直接使用 Hardware 命名空間中的 Computer 類別了!

參考:Namespaces (C++)
 


2013/4/18

enum 也有同樣的問題,因為 enum 的內容是全域共用的,所以遇到衝突的問題也可以用 namespace 的方式解決,參考:Using enum inside types - Compiler warning C4482 C++

留言

這個網誌中的熱門文章

Linux 批次檔的寫法

【分享】如何顯示 Debug Message

[分享] Visual Studio 遠端偵錯