簡體   English   中英

模板化 class 中的嵌套結構與 std::map::const_iterator?

[英]Nested struct in templated class with std::map::const_iterator?

以下代碼在聲明迭代器的行生成語法錯誤:

template <typename T>
class A
{
  public:

    struct B
    {
       int x, y, z;
    };

    void a()
    {
        std::map<int, B>::const_iterator itr; // error: ; expected before itr
    }

    std::vector<T> v;
    std::map<int, B> m;
};

這只發生在 A 是模板化的 class 時。 這段代碼有什么問題? 如果我將 B 從 A 中移出,則代碼編譯得很好。

你需要一個類型名:

 typename std::map<int, B>::const_iterator itr;

迭代器是一個依賴類型(依賴於 B),當你遇到這種情況時,編譯器會要求你用類型名來澄清它。

這里對這個問題進行了合理的討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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