之间的区别。和 :: 在 C++对于静态成员?
当我尝试使用 Class.Variable
我收到的错误是“变量”左侧的错误必须具有类/结构/联合
,当我执行 Class::Variable
时,我没有收到任何错误。尽管在这两种情况下我都通过智能感知获得了 Variable
。在这种情况下, .
和 ::
之间到底有什么不同?
Possible Duplicate:
When do I use a dot, arrow, or double colon to refer to members of a class in C++?
When I try to access my static variable using Class.Variable
I get the error that Error left of 'Variable' must have class/struct/union
and when I do Class::Variable
I get no error. Although in both cases I get Variable
through intellisense. What exactly is the different between .
and ::
in this case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
可以通过两种方式访问类的静态成员
(a) 使用类的实例 - 使用
.
例如obj.variable
(b) 不使用类的实例 - 使用
::
例如class::variable
Static members of a class can be accessed through two ways
(a) With instances of class - Use
.
e.g.obj.variable
(b) Without instance of class - Use
::
e.g.class::variable
.
用于对象::
作为类名。最佳实践:
.
is used for objects::
for class names.best practice:
.
是一个实例引用(例如,在 LHS 上有一个对象)。::
是静态引用。 RHS 上有一个类型。.
is an instance reference (e.g. on the LHS there is an object).::
is a static reference. On the RHS there is a type.::
用于类/命名空间范围,但在这种情况下.
的左侧必须是变量。请注意,这是可行的,这可能就是为什么 Intellisense 对您也适用的原因:the
::
is for class/namespace scope, but the left hand side of.
must be a variable in this case. Note that this would work, which might be why Intellisense works as well for you:点运算符也称为“类成员访问运算符”,需要类/结构的实例。
该措辞取自 C++0x FDIS。
The dot operator, also called the "class member access operator", needs an instance of a class/struct.
The wording is taken from C++0x FDIS.