从实例访问typedef

pio*_*otr 13 c++ typedef instance

和stl容器一样,为什么我们不能从类实例中访问类中的typedef?对此有特别的了解吗?


当value_type是模板参数时,如果不需要像vector :: value_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
Run Code Online (Sandbox Code Playgroud)

Iva*_*Siu 11

答案是decltype用来获得课程.例如,

decltype(t)::value_type

需要C++ 11.

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


sin*_*nek 5

因为typedef只是另一种类型的同义词.它不是一个对象(类的成员).

正如@Neil Butterworth所说:"因为.运营商是会员访问运营商."