C++;-访问全局变量对象 我正在构建C++项目,我想创建一个全局自定义对象。我创建了一个名为Material的自定义类
rt.hC++;-访问全局变量对象 我正在构建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()
模板
课堂材料
{
公众:
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;