c++ では、右辺値または一時オブジェクトのみが const 参照にバインドできることを理解しています。(またはそれに近いもの...)
たとえば、関数があり、次のようdoStuff(SomeValue & input)
に SomeValue getNiceValue()
定義されているとします。
/* These do not work */
app->doStuff(SomeValue("value1"));
app->doStuff(getNiceValue());
/* These all work, but seem awkward enough that they must be wrong. :) */
app->doStuff(*(new SomeValue("value2")));
SomeValue tmp = SomeValue("value3");
app->doStuff(tmp);
SomeValue tmp2 = getNiceValue();
app->doStuff(tmp2);
だから、3つの質問:
doStuff()
orの署名を自由に変更できないためgetNiceValue()
、渡したいものには常に何らかの「名前」を使用する必要があるということdoStuff
ですか?仮説として、関数のシグネチャを変更できた場合、この種の共通パターンはありますか?
新しい C++11 標準は、物事をまったく変更しますか? C++11 でより良い方法はありますか?
ありがとうございました