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

C++;-访问全局变量对象 我正在构建C++项目,我想创建一个全局自定义对象。我创建了一个名为Material的自定义类,c++,object,global-variables,shared,C++,Object,Global Variables,Shared,rt.h 模板 课堂材料 { 公众: Vec3-ka,kd,ks,kr; T sp,透明度,反射率; 材料(){ ka=Vec3(0); kd=Vec3(0.0,0.0,0.0); ks=Vec3(0.0,0.0,0.0); sp=0.0; kr=Vec3(0.0,0.0,0.0); 反射率=0.0; 透明度=0.0; } }; 在rt.cpp文件的顶部,我有以下内容 #include <"rt.h"> Material<float> currentMaterial()

rt.h

模板
课堂材料
{
公众:
Vec3-ka,kd,ks,kr;
T sp,透明度,反射率;
材料(){
ka=Vec3(0);
kd=Vec3(0.0,0.0,0.0);
ks=Vec3(0.0,0.0,0.0);
sp=0.0;
kr=Vec3(0.0,0.0,0.0);
反射率=0.0;
透明度=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);
raytracer.cpp:294:3:错误:成员引用的基是函数;也许你是想不加争论地说出来?
currentMaterial.ka=Vec3(kar、kag、kab);
当我打电话时:

currentMaterial.ka = Vec3<float>(kar, kag, kab);
currentMaterial.ka=Vec3(kar、kag、kab);
谢谢

Material currentMaterial();
看起来像编译器的函数声明。按如下方式声明变量:

Material<float> currentMaterial;
物料流物料;
编译器处理

材料当前材料();
作为

材料(无效);

函数声明,带有一个void参数和一个Material return类型

所以你应该写信

材料流材料;
相反

Material<float> currentMaterial();
Material<float> currentMaterial;