私がクラスを持っているとしましょう:
class String
{
public:
String(char *str);
};
そして2つの機能:
void DoSomethingByVal(String Str);
void DoSomethingByRef(String &Str);
このようにDoSomethingByValを呼び出すと、次のようになります。
DoSomethingByVal("My string");
コンパイラーは、一時的なStringオブジェクトを作成し、char*コンストラクターを呼び出す必要があると判断します。
ただし、同じ方法でDoSomethingByRefを使用しようとすると、「パラメーターを「char *」から「String&」に変換できません」というエラーが発生します。
代わりに、インスタンスを明示的に作成する必要があります。
DoSomethingByRef(String("My string"));
これは、厄介な迷惑になる可能性があります。
これを回避する方法はありますか?