這是一個技術問題,以及(如果技術上可行)風格問題。在我的代碼中,我有一系列加載和操作文件的函數。對於不同的語法這些功能在單獨的名稱空間的存在,使得:C++:在程序邏輯/條件命名空間中使用名稱空間?
namespace typeA {
void load();
void manipulate();
};
namespace typeB {
void load();
void manipulate();
};
在該小例子,很明顯我可以簡單有用於檢查文件類型,然後調用的typeA一個子句:load()和類型B:負載()等。
但是,我想知道是否也可以使用命名空間別名來做到這一點?它會使代碼更清晰,因爲在命名空間中有幾十個對函數的調用,都需要單獨的if/else子句。
我已經試過什麼:
namespace my_type = (ft == "type_A") ? typeA : typeB;
...
my_type::load();
不與命名空間中的別名分配行錯誤編譯。
是否有另外一種方式來處理這種情況/通常採用的乾淨方式來處理這種情況?
我想每個文件類型的虛擬類和繼承將是一個選項。有其他人嗎?
namespace聲明使用下一個字符串,它會如何工作? – Infested
你也可以使用模板... – Nim
@Nim:謝謝你的建議。如何在這種情況下使用模板?該函數的輸入將是相同的,只有通過字符串傳遞的文件的內容纔會不同。 – kmh