我发现了我无法解释的古玩。当我在 VS2013 中使用类创建向导时,它会为我创建具有已定义类基础的 .h 和 .cpp 文件。
头文件示例:
#pragma once
class SomeClass
{
public:
SomeClass();
~SomeClass();
};
然后我添加了一些用法。我在 stdafx 中包含了带有这些命名空间的标头。SFML 的 std 和 sf 在我的应用程序中使用:
#pragma once
using namespace std;
using namespace sf;
class SomeClass
{
public:
SomeClass();
~SomeClass();
};
一切正常。stdafx.h 不包含在头文件中,仅包含在 .cpp 中。
但随后我将使用相同的类结构手动创建头文件(不带 .cpp):
#pragma once
using namespace std;
using namespace sf;
class SomeOtherClass
{
public:
SomeOtherClass();
~SomeOtherClass();
}
它不起作用。VS 说找不到“sf”命名空间,但“std”命名空间没有问题。
这就是我想知道的事情:为什么第一种情况是有效的,而 VS 已经从预编译的头文件中找到了命名空间,而第二种情况不起作用。