我有浮动变量,它的初始值被传递给函数作为参考 我需要将此参考值设置为包含数据的struct 有一些工作已经完成,我需要恢复更新的价值 这是伪代码中的流程:
class Foo
{
float initVal = 20;
GUImanager gUImanager;
gUImanager.SetVariableValue(initVal);
// the initVal float varibal should updated from
// GUImanager class with the new values here .
};
struct dataHolder
{
dataHolder(float& _floatref)
{
// here i get the compilation error :
//error C2758: 'dataHolder::floatHolder' : a member of reference type must be initialized
floatHolder = _floatref;
}
float& floatHolder;
};
class GUImanager
{
public:
void GUImanager::SetVariableValue(float const& _floatRef)
{
dataHolder* pdataHolder = new pdataHolder(_floatRef);
}
float i = 0.0f;
while(true)
{
pdataHolder.floatHolder+ = i++;
}
}
我正在阅读一些处理此主题的答案,但没有找到任何可以帮助我解决问题的答案。 如何使用编译器将通过编译的内容设置引用?
答案 0 :(得分:2)
必须初始化引用,初始化成员的位置是初始化列表:
dataHolder(float& _floatref) : floatHolder(_floatref)
{
}
您的构造函数包含一个赋值,赋值将为引用所引用的对象赋值(除非您初始化它,否则它不引用任何内容)。