代码之家  ›  专栏  ›  技术社区  ›  piotr

从实例访问typedef

  •  13
  • piotr  · 技术社区  · 16 年前


    当value\u type是一个模板参数时,如果不需要像vector::value\u type那样指定模板参数,它可以帮助生成更通用的代码

    class T {
    public:
        typedef int value_type;
        value_type i;
    };
    
    T t;
    T::value_type i; // ok
    t.value_type i;  // won't work
    
    3 回复  |  直到 16 年前
        1
  •  13
  •   Community Mohan Dere    9 年前

    decltype 先上课。例如。,

    decltype(t)::value_type

    需要C++ 11。

    参考文献: https://stackoverflow.com/a/13936644/577704

        2
  •  5
  •   sinek    16 年前

    正如@Neil Butterworth提到的:“因为。运算符是成员访问运算符。“

        3
  •  1
  •   JoeG    16 年前

    没有充分的理由使用不同的运算符进行范围解析( :: )而不是成员访问( . )因为它从不含糊不清。这是一个烦恼,但这只是语言的方式。


    • C#用途 而不是 :: ,但在访问嵌套类型和静态成员时仍然需要使用类名。
    • ,和 <instance>.<static nested type> 等同于 <type>.<static nested type> .