как преобразовать char [] в строку & - PullRequest
2 голосов
/ 28 августа 2011

У меня есть метод setValue(string& val), который мне нужно вызвать для некоторых значений по умолчанию.Я хотел бы назвать это так:

setValue("");
setValue("random value");

, но я получаю следующую ошибку с g ++: no matching function to call setValue(const char [10])

любая идея о том, как я могу сделать это, кроме создания объекта временной строки?Это работает, но я нахожу это неудобным:

string temp("random value");
setValue(temp);

Ответы [ 2 ]

11 голосов
/ 28 августа 2011

Измените свою функцию, чтобы принять const string &.

6 голосов
/ 28 августа 2011

Проблема в том, что string& не будет привязываться к временным объектам, только к неконстантным именованным объектам ( неконстантные значения в стандартном языке). Вам нужно будет назвать объект для передачи в вашу функцию, как вы делаете с переменной temp.

Один из обходных путей - использовать const ссылку на строку и передать ей непосредственно ваш строковый литерал. Это работает, потому что 1) string имеет неявный конструктор, который принимает const char* 2) const char [10] будет уменьшаться до const char*.

...