在 C++ 中每次都使用 ::

Using :: everytime in C++

好吧,我是 C++ 的新手,因为我来自 C 和 Java,这是一个简单的问题。我有以下 header 称为 Engine.h(代码来自 tutorial to make games with C++):

#ifndef TWITCH_ENGINE
#define TWITCH_ENGINE

#include "GLFW/glfw3.h"
#pragma comment (lib, "opengl32.lib")

class Engine
{
public:
    static int SCREEN_WIDTH;
    static int SCREEN_HEIGHT;

    Engine();
    ~Engine();

    bool initialize(char *windowTitle);

private:

};

#endif

和源文件Engine.cpp

#include "Engine.h"

int Engine::SCREEN_WIDTH = 1024;
int Engine::SCREEN_HEIGHT = 768;

Engine::Engine() {


}

Engine::~Engine() {


}

bool Engine::initialize(char* windowTitle);

所以问题是,我是否必须每次都写 Engine::member_name 或者有没有办法避免这种情况,也许可以写类似 using namespace Engine;?如果是这样,以这种方式编码的好处是什么?

简答:是的,你必须这样做。

长答案:using namespace 仅适用于名称空间。这里不足为奇。 class 不是命名空间。如果将代码移至 header,这种必要性就会消失,但它还有其他与 C 中相同的缺点,因此您可能知道它们。