在 C++ 使用 namespace
寫程式常常會碰到名稱 (類別、函式、變數 ... 等等) 衝突的問題 (因為英文懂得太少了),這個時候命名空間就可以發揮功用了,只要在自己的命名空間內,即使名稱跟別人一樣也不會衝突了。
同時在 Visual Studio 的 Class View 中,也會依據命名空間來分類,方便 Source Code 的管理。唯一的缺憾就是不能像 Net 一樣使用 "." 當作命名空間的名稱,所以只好用 "_" 來取代了!
宣告的方式是利用 namespace identifier { } 將你的程式包起來即可,包括 Header 與 C++ file 都要,例如:
Computer.h
Computer.cpp
使用時直接 #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++
同時在 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++
留言