它已經比我上次使用C++的很長一段時間,從Java和Python回來了,我有一個基於C的良好做法++問題:C++包裝類型語義
我想保持一個語義代碼有關一些非常簡單的對象,比方說我們有對象標籤和文件,它們只是std :: string和一個包含使用標籤和文件的幾個函數的類TagManager。
我的問題是,是創建一個自定義類型代表這些微不足道的對象或直接使用它們是什麼?
更具體的我能有一個函數的定義之一:
TagIterable myFunction(Tag tag, File file);
std::vector<Tag> myFunction(Tag tag, File file);
std::vector<std::string> myFunction(std::string tag, std::string file);
我傾向於第一種解決辦法,因爲我想保持一個語義代碼,在另一方面做起來需要用戶檢查這些類型是什麼,因此減少了使用的簡單性。
我還閱讀了另一個問題(Thou shalt not inherit from std::vector)'不要生產新的實體,只是爲了讓事情看起來更好。
那麼你在這種情況下做什麼, C++哲學推薦做什麼?
文件代表一個實際的文件?或者這是否意味着它是一個文件名?那麼將其稱爲文件名會更好,因爲它可能會誤導其他人使用您的代碼... – xmoex