[英]How to shorten nested namespaces in a return type which is private to an inner class?
這個問題是關於在.cpp
文件中的方法返回類型中處理長嵌套的私有 class 命名空間。 之前有 一些關於在cpp
文件中避免長名稱和嵌套命名空間的問題,但它們似乎沒有涵蓋我的用例。
我在 header .h
文件中有一個私有嵌套 class具有特定於該 class 的私有類型,如下所示:
class outer { class inner { typedef map<int, map<int, int>> footype; private: footype manipulate_foos(footype f1, footype f2); } }
在.cpp
文件中定義一個方法,如果我不使用返回類型的命名空間的完整路徑,編譯器會抱怨,即使命名空間是在參數類型中推斷出來的。 所以我必須寫一些類似的東西
outer::inner::footype outer::inner::manipulate_foos(footype f1, footypte f2) { // body }
在我的情況下,這需要將返回類型和方法名稱拆分為多行,並且非常難以閱讀。
當返回類型是內部 class 的私有類型時,有什么方法可以省略返回類型中的命名空間?
需要明確的是,我不想在方法名稱中省略命名空間; 我理解這些的價值,我覺得它們不會妨礙可讀性,而返回類型中的命名空間會損害可讀性。 由於這是一種私有方法,我認為說明完整的返回類型沒有幫助。
到目前為止,我在.cpp
文件中嘗試了以下解決方案:
using footype = outer::inner::footype
但它給了我錯誤'class outer::inner::footype' is private within this context.
這似乎有效:
auto outer::inner::manipulate_foos(footype f1, footype f2) -> footype { ... }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.