我正在向由第三方库定义的类添加辅助函数。此函数就地修改对象。如果我将函数编写为方法,它将如下所示:
myObject &doTheThing( int someParameter ) {
myProperty = someParameter;
return *this;
}
所以它可以被称为:
myInstance = instance1 + instance2;
myInstance.doTheThing( );
或者
display( (instance1 + instance2).doTheThing( ) );
哪个工作正常。但是由于我无法扩展对象,所以我将其编写为辅助函数;
myObject &doTheThing( myObject &object, int someParameter ) {
object.myProperty = someParameter;
return object;
}
这在第二个用例中无效,因为临时无法绑定到非常量引用(人为的测试用例:http ://codepad.org/5frJjCUb )。有没有办法在不使用 pass-by-copy 的情况下解决这个问题?如果复制是唯一的方法,是否有一些最佳实践方法可以帮助编译器正确优化它?(C ++ 11 很好)