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

时间:2014-10-28 23:52:52

标签: c++ object global-variables shared

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

rt.h

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);

由于

2 个答案:

答案 0 :(得分:4)

Material<float> currentMaterial();

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

Material<float> currentMaterial;

答案 1 :(得分:1)

编译器对待 Material<float> currentMaterial(); Material<float> currentMaterial(void);

一个函数声明,带有void参数和Material返回类型。

所以你应该写 Material<float> currentMaterial; 代替。