我在一个类中找到了这行代码,我必须对其进行修改:
::Configuration * tmpCo = m_configurationDB;//pointer to current db
我不知道类名前面的双冒号到底是什么意思。否则,我会读到:将tmpCo
声明为指向Configuration
类的对象的指针……但是前缀的双冒号让我感到困惑。
我还发现:
typedef ::config::set ConfigSet;
发布于 2010-11-25 00:27:38
这确保解析是从全局名称空间进行的,而不是从当前所在的名称空间开始。例如,如果您有两个名为Configuration
的不同类:
class Configuration; // class 1, in global namespace
namespace MyApp
{
class Configuration; // class 2, different from class 1
function blah()
{
// resolves to MyApp::Configuration, class 2
Configuration::doStuff(...)
// resolves to top-level Configuration, class 1
::Configuration::doStuff(...)
}
}
基本上,它允许您遍历到全局名称空间,因为您的名称可能会被另一个名称空间中的新定义破坏,在本例中为MyApp
。
发布于 2010-11-25 00:27:17
::
操作符被称为作用域解析操作符,它就是这样做的,它解析作用域。因此,通过在类型名前加上这个前缀,它会告诉编译器在全局名称空间中查找该类型。
示例:
int count = 0;
int main(void) {
int count = 0;
::count = 1; // set global count to 1
count = 2; // set local count to 2
return 0;
}
发布于 2010-11-25 00:29:02
::
用于链接某些东西(变量、函数、类、类型定义函数等)添加到命名空间或类中。
如果在::
之前没有左侧,那么它强调了您正在使用全局名称空间的事实。
例如:
::doMyGlobalFunction();
https://stackoverflow.com/questions/4269034
复制相似问题