C++ 使用对象而不是范围解析运算符(:)访问类中的typedef
在下面的代码中,当我尝试使用实例化对象访问typedef时,它会给我一个错误,当我使用scope resolution操作符(:)访问它时,程序工作正常。我只是想知道为什么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
#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'