我正在构建一个 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;
    }
};

在我的 rt.cpp 文件的顶部,我有以下内容。
#include <"rt.h">
Material<float> currentMaterial();

后来我调用 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);

当我打电话时:
currentMaterial.ka = Vec3<float>(kar, kag, kab);

谢谢

最佳答案

Material<float> currentMaterial();

看起来像编译器的函数声明。像这样声明你的变量:
Material<float> currentMaterial;

关于C++ - 访问全局变量对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26620521/

10-11 05:38