Returning reference to local temporary object

regetskcob picture regetskcob · Feb 2, 2015 · Viewed 11.2k times · Source

This code

virtual const core::matrix4& getViewMatrixAffector() const {return core::matrix4();};

results with a warning telling me "Returning reference to local temporary object"...

How to solve this warning?

As mentioned below i tried to remove the '&'... Error

Answer

Since you're not in control of the return type, you must make sure you return a valid object and not just a temporary. One solution would be a function-local static variable:

virtual const core::matrix4& getViewMatrixAffector() const
{
  static const core::matrix4 val;
  return val;
};

If you find yourself doing this in many functions (with the same type of the variable), make val a (suitably renamed) static member of the class.