首页 > 解决方案 > ::struct 在这种情况下是什么意思?

问题描述

我不知道如何搜索这个,因为谷歌似乎忽略了::我的搜索。

我在伪代码中有以下行:(此上下文中的播放器定义为Player *player:)

if ( player == ::player )

我认为这意味着,如果var player,是类型player。但这对我来说没有意义,因为编译器应该知道它是什么类型。

那么这里是什么::player意思呢?

标签: reverse-engineeringida

解决方案


我没有足够的代表发表评论。所以把它变成了一个完整的答案。

通常,::运算符用作范围解析运算符

根据语言,在您的示例中,因为没有前置命名空间,它将引用全局player

从链接页面:

class A {
public:
    static int i; // scope of A
};

namespace B {
    int j = 2;
}  // namespace B

int A::i = 4;  // scope operator refers to the integer i declared in the class A
int x = B::j;  // scope operator refers to the integer j declared in the namespace B

在 IDA 的上下文中,它可能是它自己引用全局player对象的方式。

所以在你的例子中:

if ( player == ::player )

开发人员明确强制将本地player对象/变量与player全局命名空间中的对象/变量进行比较。

这是一个简单的在线演示,可能会有所帮助。原始avar变量可以是更复杂的对象、类或函数,而不是 int。


推荐阅读