簡體   English   中英

如何縮短內部 class 私有的返回類型中的嵌套命名空間?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM