C++ - 访问全局变量对象

Mar*_*cus 4 c++ shared global-variables object

我正在构建一个 C++ 项目,我想创建一个全局自定义对象。我创建了一个名为 Material 的自定义类。

室温

template<typename T>
class Material
{
    public:
    Vec3<T> ka, kd, ks, kr;
    T sp, transparency, reflectivity;
    Material( ) {
        ka = Vec3<T>(0);
        kd = Vec3<T>(0.0, 0.0, 0.0);
        ks = Vec3<T>(0.0, 0.0, 0.0);
        sp = 0.0;
        kr = Vec3<T>(0.0, 0.0, 0.0);
        reflectivity = 0.0;
        transparency = 0.0;
    }
};
Run Code Online (Sandbox Code Playgroud)

在我的 rt.cpp 文件的顶部,我有以下内容。

#include <"rt.h">
Material<float> currentMaterial();
Run Code Online (Sandbox Code Playgroud)

后来我调用 currentMaterial 并得到一个错误

raytracer.cpp:294:3: error: base of member reference is a function; perhaps you meant to call it with no arguments?
            currentMaterial.ka = Vec3<float>(kar, kag, kab);
Run Code Online (Sandbox Code Playgroud)

当我打电话时:

currentMaterial.ka = Vec3<float>(kar, kag, kab);
Run Code Online (Sandbox Code Playgroud)

谢谢

The*_*ark 6

Material<float> currentMaterial();
Run Code Online (Sandbox Code Playgroud)

看起来像编译器的函数声明。像这样声明你的变量:

Material<float> currentMaterial;
Run Code Online (Sandbox Code Playgroud)