class X { private: string DATA; . . . const string read_entry( const string & s ) { return this->(DATA[1]); } //Error }
Что с этим не так? Я пытаюсь получить доступ к индексу строки DATA, но я получаю сообщение об ошибке, когда я this->DATA[1]
this->DATA[1]
В фрагменте кода есть две проблемы:
()
DATA[1]
return this->(DATA[1]);
return this->DATA[1];
char
string
Кроме того, добавьте ; после определения класса.
;
Несколько вещей:
тип возврата вашей функции (константная строка) не соответствует типу, который вы возвращаете (char). Не зная цели этой функции, я не знаю точно, что нужно исправить.
вы передаете строку & вашей функции, но она не используется в теле функции. Какова цель этого?
вам не нужна явная ссылка на «this», достаточно «return DATA [1]».
если вы не очень уверены в длине DATA, вам следует использовать DATA.at (1), а не DATA [1], потому что .at () делает проверку диапазона для вас. Без этого у вас могут возникнуть проблемы с памятью.
В будущем, пожалуйста, объясните, что должен делать код, чтобы мы могли понять, почему он выглядит так, как он.
Похоже, проблема заключается в типе возврата функции. Указанный тип const string, но индексирование в string возвращает char. Попробуйте следующее вместо
const string
char read_entry( const string & s ) { return this->DATA[1]; }