use*_*058 3 c++ variables static namespaces global
所以在我的命名空间的.h文件中,我有
namespace wtvr{
static Matrix m;
void LoadIdentity(void);
};
Run Code Online (Sandbox Code Playgroud)
在我的.cpp文件中,我有
namespace wtvr{
void LoadIdentity(void){
m = Identity();
m.display();// trace for debugging
}
};
Run Code Online (Sandbox Code Playgroud)
否则在主程序中
wtvr::LoadIdentity();
wtvr::m.display();
Run Code Online (Sandbox Code Playgroud)
第一个display()从LoadIdentity()函数中将标识矩阵打印到屏幕,但是第二个(在函数返回后)显示全零.为什么我的价值观消失了?有没有不同的方式我应该做我的全球?谢谢
您已static Matrix m;
在头文件中声明.这意味着包含该标头的每个.cpp文件都将获得自己的版本m
.
相反,你需要使它成为一个全局(虽然命名空间范围)变量.
在头文件中:
namespace wtvr{
extern Matrix m;
};
Run Code Online (Sandbox Code Playgroud)
在任何.cpp文件中:
namespace wtvr{
Matrix m;
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1884 次 |
最近记录: |