Допустим, у меня есть класс:
class String
{
public:
String(char *str);
};
И две функции:
void DoSomethingByVal(String Str);
void DoSomethingByRef(String &Str);
Если я позвоню DoSomethingByVal следующим образом:
DoSomethingByVal("My string");
компилятор выяснил, что он должен создать временный объект String и вызвать конструктор char *.
Однако, если я пытаюсь использовать DoSomethingByRef таким же образом, я получаю сообщение об ошибке «Не удалось преобразовать параметр из« char * »в« String & ».
Вместо этого я должен явно создать экземпляр:
DoSomethingByRef(String("My string"));
, что может раздражать preety.
Есть ли способ избежать этого?