所以在我的命名空间的.h文件中
namespace wtvr{
static Matrix m;
void LoadIdentity(void);
};
在其.cpp文件中,
namespace wtvr{
void LoadIdentity(void){
m = Identity();
m.display();// trace for debugging
}
};
其他地方在主程序中
wtvr::LoadIdentity();
wtvr::m.display();
第一个display()从LoadIdentity()函数内部将标识矩阵打印到屏幕上,但是第二个display()在函数返回之后显示全零。
为什么我的值(value)观消失了?
我应该以其他方式走向全局吗?
谢谢
最佳答案
您已经在头文件中声明了static Matrix m;
。这意味着每个包含该 header 的.cpp文件都将获得自己的m
版本。
取而代之的是,您需要将其设置为全局变量(尽管在命名空间范围内)。
在头文件中:
namespace wtvr{
extern Matrix m;
};
在任何.cpp文件中:
namespace wtvr{
Matrix m;
};