Это может быть вопрос новичков, но я не могу решить эту проблему. Я могу решить одну или последнюю проблему отдельно, но не в одно и то же время.Передача строкового литерала для функции и назначение переменной-члену
У меня есть класс со строковым элементом и функция его установки. Я хочу передать литерал в функцию.
class Profiler
{
private:
std::string description;
//snip
public:
//snip
void startJob(const std::string &desc);
};
void Profiler::startJob(const string &desc) {
//snip
description = desc;
}
и я хочу (На самом деле нужно), чтобы использовать его как это:
profiler.startJob("2 preprocess: 1 cvConvertScale");
Проблемы:
Как передать строковый литерал к функции? Ответы, которые я мог найти: передать по значению или передать его указателем const или ссылкой на const. Я не хочу передавать его по значению, потому что он медленный (в конце концов, это профилировщик, с точностью до микросекунд). Const pointer/reference дает ошибку компилятора (или я что-то не так?)
Как назначить его функции-член? Единственное решение, которое я смог найти, это сделать переменную-член указателем. Предоставление ему указателей, не содержащих указателей, «поле« описание »имеет« неполный тип »(wtf означает ли это?). Наличие его в качестве указателя не работает, потому что он присваивает константу неконстантной. Кажется, работает только указатель/ссылка на const.
Две вещи: 1. Для справки вам нужна действительная переменная. Итак, 'string arg =" 2 preprocess: 1 cvConvertScale "; profiler.startJob (arg); '2. Вы неправильно назначили свой указатель. 'description = &desc;' – chris