Так что я делаю некоторые синтаксический разбор C-строки в функции, которая выглядит следующим образом:Должен ли я использовать const_cast?
void parse(const char** params, int numParams);
Я хотел вытащить информацию из одной из строк, хранящихся в Params, так что я написал код, который выглядел как это:
char* charPointer;
charPointer = params[0];
компилятор не нравится это и сказал мне, что он не может конвертировать константный символ * к * полукокса. Я понимаю причины этого (теоретически я мог бы написать адрес, на который указывает charPointer, но не по параметрам [0], если он позволил мне), но я не понимаю, как мне обойти это. Я знаю два способа исправить эту ошибку, но я не знаю, какая из них «правильная» или действительно какая разница между ними. Первый:
const char* charPointer;
charPointer = params[0];
И второй способ:
char* charPointer;
charPointer = const_cast<char*>(params[0]);
Так что лучше и почему?
Это 'const'. Объявите указатель соответствующим образом. Не отключайте его, потому что он должен быть доступен только для чтения, не трогайте его. Это похоже на то, чтобы закрутить все болты на вашем стуле и надеяться, что он не развалится. – tadman
Довольно часто, когда вы получаете возможность использовать броски, вы делаете что-то неправильно –
Хорошо, но почему? Если я const_cast, это значит, что я могу писать на этот адрес памяти, хотя теоретически я не мог бы этого сделать? – quiggy