首先,一个更抽象的问题。当您不需要构造函数/析构函数或所述对象的多个副本时,就速度而言,使用命名空间而不是类是一种好习惯吗?
其次,在尝试包含和使用命名空间时,我得到“ ccEaV3B0.o:main.cc:(.text+0x10): undefined reference to `board::arbi' ”。我在 Windows 7 上使用 Mingw32,使用 make 命令:g++ -Wall main.cc board.cc
当我单独编译时也会发生这种情况,使用: g++ -c board.cc g++ -Wall main.cc board.o
以下是(最小)文件:
主.cc:
#include <iostream>
using namespace std;
#include "board.h"
int main(){
cout << board::give() << endl;
return 0;
}
板.h:
#ifndef BOARD_H
#define BOARD_H
namespace board {
extern int arbi;
extern int give();
}
#endif
板.cc:
#include "board.h"
int board::give(){
return arbi;
}
通过初始化“int board::arbi = 5;”来解决 在board.cc
问题仍然是当某物显然是一个对象时为什么要使用一个类,即使您知道该对象总会有一个实例。在我看来,您会想要全局变量,但为了避免名称冲突,您会将它们放在命名空间中。