![](/img/trans.png)
[英]What does it mean by “indirectly declaring a namespace within another namespace”?
[英]What does :: mean after declaring an object?
在完成标准的c ++教程之后,我正在尝试做一些世界性的事情。 我尝试做的第一件事是在没有窗口的情况下直接在屏幕上绘制。 我发现了这一点 ,并且有效。
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HDC screenDC = ::GetDC(0);
::Rectangle(screenDC, 200, 200, 300, 300);
int exit; cin >> exit;
return 0;
}
但是在标准的c ++教程中,它没有涵盖任何此类内容
HDC screenDC = ::GetDC(0);
::Rectangle(screenDC, 800, 200, 300, 300);
Rectangle的成员是什么?
如果您不介意,我还有其他一些可能很简单的问题。 如果没有,不用担心。
一旦我的矩形在其上移动了一个窗口,它就会消失。 是否有回调让我知道这一点,以便我可以重新粉刷?
如何更改矩形的颜色?
我可以去哪里学习? 我发现的每个教程都很稀疏,而且大多数都已经过时了。 如果那是我需要做的,我可以得到一本书。 尝试了以下方法(有时会成功,有时却不会成功):
http://msdn.microsoft.com/zh-CN/library/vstudio/bb384843.aspx
http://msdn.microsoft.com/zh-CN/library/ms533895(v=vs.85).aspx
::
是作用域解析运算符。
scope::name
表示使用在类或命名空间中声明的名称,称为scope
。
::name
表示使用在全局命名空间中声明的名称。 通常,它是可选的。 但是有时候,如果当前范围中还有其他同名的东西,则需要使用它。
::
访问全局名称空间。 这是名称空间解析。 您可以将那些::
放下,如果您愿意,它们会变得很破旧。
::
是作用域解析运算符。 ::Identifier
将引用全局名称空间中的任何内容。 然而,并非总是必要的。 仅在不使用时才真正需要它会引起歧义:
int i = 0;
void func() {
int i = 0;
::i = 1; // This will set the global i
i = 1; // This will set the local i
}
(注意:我不以任何方式认可全局变量)
::用于访问类或名称空间中的内容。 (或者在这种情况下,不是。)
因此,如果您有一个带有静态方法栏的Foo类,则可以这样调用它: Foo::Bar();
另外,如果您有一个带有函数PrintPrettyThings的命名空间MyLibrary,则可以这样调用它: MyLibrary::PrintPrettyThings();
如果您在某处还有另一个功能Bar并且在Foo方法内部,则可以使用::Bar();
调用位于Foo之外的Bar,否则您将仅调用Foo :: Bar。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.