比方說,我有一個頭文件Snake.h:命名空間的單一方法,C++
#include "SnakeBodyPart.h"
#include "GUI.h"
//...
而且SnakeBodyPart.h是(除其他事項外):
#include "GUI.h"
class SnakeBodyPart {
private :
GUI::Orientation orientation;
}
,最後GUI。 H:
class GUI {
enum Orientation { NORTH, EAST, SOUTH, WEST };
}
現在Snake.cpp我要做到以下幾點:
void Snake::turn(){
if(bodyPart.getOrientation() == GUI::EAST){
//do something
else if (bodyPart.getOrientation() == GUI::SOUTH){
//do something
else if ...
}
我想你明白了。我想知道的是:是否可以爲單個方法設置命名空間?像給名稱空間GUI到Snake::turn
,所以我只能鍵入bodyPart.getOrientation() == EAST
?
我在與Snake.cpp不同的命名空間的幾個枚舉,並想使代碼更readible,通過給予一定的方法的某些命名空間,而不只是一個命名空間爲Snake.cpp。這可能嗎?
爲什麼要包含「GUI.h」兩次,snake.h和SnakeBodyPart.h?必須是靜態函數,否則必須實例化對象以調用它們。爲什麼命名空間使用靜態函數。將所有枚舉收集在一個名稱空間中而不是類函數中。 – DumbCoder 2010-12-17 14:08:20
你的回答對我來說絕對沒有意義。 – Aerus 2010-12-17 14:15:17
另請注意,您可以切換(bodyPart.getOrientation())以避免else-if鏈。 – 2010-12-18 00:39:58