所以在我的命名空间的.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;
};

07-26 05:15