c ++将float作为对象之间的引用传递并设置为struct赋予:必须初始化引用类型的成员

时间:2015-12-04 08:54:47

标签: c++ reference literals

我有浮动变量,它的初始值被传递给函数作为参考 我需要将此参考值设置为包含数据的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++;
         }
    }

我正在阅读一些处理此主题的答案,但没有找到任何可以帮助我解决问题的答案。 如何使用编译器将通过编译的内容设置引用?

1 个答案:

答案 0 :(得分:2)

必须初始化引用,初始化成员的位置是初始化列表

dataHolder(float& _floatref) : floatHolder(_floatref)
{
}

您的构造函数包含一个赋值,赋值将为引用所引用的对象赋值(除非您初始化它,否则它不引用任何内容)。