C++ 使用对象而不是范围解析运算符(:)访问类中的typedef

C++ 使用对象而不是范围解析运算符(:)访问类中的typedef,c++,class,typedef,C++,Class,Typedef,在下面的代码中,当我尝试使用实例化对象访问typedef时,它会给我一个错误,当我使用scope resolution操作符(:)访问它时,程序工作正常。我只是想知道为什么 #include <iostream> class Types { public: typedef int Integer; }; int main() { Types types; types.Integer foo = 1; // <-- Gives

在下面的代码中,当我尝试使用实例化对象访问typedef时,它会给我一个错误,当我使用scope resolution操作符(:)访问它时,程序工作正常。我只是想知道为什么

#include <iostream>

class Types {

    public:

        typedef int Integer;

};

int main() {

    Types types;

    types.Integer foo = 1; // <-- Gives me an error

    Types::Integer goo = 2; // <-- Works perfectly fine

    std::cout << foo;
    std::cout << std::endl;
    std::cout << goo;

    return 0;

}

这就是语法的工作原理<代码>整数在该上下文中是属于
类型
命名空间的类型,如果要访问该类型,必须使用
<代码>运算符。用于成员访问对象或函数


操作符。
允许您访问属于实例的成员,而
遍历名称空间(允许您访问静态字段、静态函数、typedef、成员变量等)。

语法就是这样工作的<代码>整数在该上下文中是属于
类型
命名空间的类型,如果要访问该类型,必须使用
<代码>运算符。用于成员访问对象或函数


操作符。
允许您访问属于实例的成员,而
遍历名称空间(允许您访问静态字段、静态函数、typedef、成员变量等)。

语法就是这样工作的<代码>整数在该上下文中是属于
类型
命名空间的类型,如果要访问该类型,必须使用
<代码>运算符。用于成员访问对象或函数


操作符。
允许您访问属于实例的成员,而
遍历名称空间(允许您访问静态字段、静态函数、typedef、成员变量等)。

语法就是这样工作的<代码>整数在该上下文中是属于
类型
命名空间的类型,如果要访问该类型,必须使用
<代码>运算符。用于成员访问对象或函数



运算符。
允许您访问属于实例的成员,而
遍历名称空间(允许您访问静态字段、静态函数、typedef、成员变量等)。

您还可以使用
decltype(type)::Integer
整数是类型的别名,而不是类成员,它们需要不同的语义您只能使用
运算符访问类的成员。您可以使用
操作符访问类的静态成员和typedefs@DanielRobertson我可以使用“.”运算符访问类的静态成员。我不明白为什么我不能访问typedef…而且,当我使用枚举而不是typedef时,它仍然不起作用。你也可以使用
decltype(type)::Integer
整数是类型的别名而不是类成员,它们需要不同的语义你只能使用
操作符访问类的成员。您可以使用
操作符访问类的静态成员和typedefs@DanielRobertson我可以使用“.”运算符访问类的静态成员。我不明白为什么我不能访问typedef…而且,当我使用枚举而不是typedef时,它仍然不起作用。你也可以使用
decltype(type)::Integer
整数是类型的别名而不是类成员,它们需要不同的语义你只能使用
操作符访问类的成员。您可以使用
操作符访问类的静态成员和typedefs@DanielRobertson我可以使用“.”运算符访问类的静态成员。我不明白为什么我不能访问typedef…而且,当我使用枚举而不是typedef时,它仍然不起作用。你也可以使用
decltype(type)::Integer
整数是类型的别名而不是类成员,它们需要不同的语义你只能使用
操作符访问类的成员。您可以使用
操作符访问类的静态成员和typedefs@DanielRobertson我可以使用“.”运算符访问类的静态成员。我不明白为什么我不能访问typedef…而且,当我使用enum而不是typedef时,它仍然不起作用。我不知道你被拒绝的原因,但我发现它非常有用。谢谢我不知道你被拒绝的原因,但我发现它非常有用。谢谢我不知道你被拒绝的原因,但我发现它非常有用。谢谢我不知道你被拒绝的原因,但我发现它非常有用。谢谢
Line 15 | invalid use of 'Types::Integer'