c ++ доступ к строковому индексу внутри этого указателя - PullRequest
1 голос
/ 03 марта 2012
class X
{
 private: 
    string DATA;

. 
.
. 

  const string read_entry( const string & s )   {   return this->(DATA[1]); } //Error


}

Что с этим не так? Я пытаюсь получить доступ к индексу строки DATA, но я получаю сообщение об ошибке, когда я this->DATA[1]

Ответы [ 3 ]

3 голосов
/ 03 марта 2012

В фрагменте кода есть две проблемы:

  1. Незаконно () около DATA[1]. Измените return this->(DATA[1]); на return this->DATA[1];.
  2. Неверный тип возврата: тип DATA[1] равен char, а не string.

Кроме того, добавьте ; после определения класса.

1 голос
/ 03 марта 2012

Несколько вещей:

  • тип возврата вашей функции (константная строка) не соответствует типу, который вы возвращаете (char). Не зная цели этой функции, я не знаю точно, что нужно исправить.

  • вы передаете строку & вашей функции, но она не используется в теле функции. Какова цель этого?

  • вам не нужна явная ссылка на «this», достаточно «return DATA [1]».

  • если вы не очень уверены в длине DATA, вам следует использовать DATA.at (1), а не DATA [1], потому что .at () делает проверку диапазона для вас. Без этого у вас могут возникнуть проблемы с памятью.

  • В будущем, пожалуйста, объясните, что должен делать код, чтобы мы могли понять, почему он выглядит так, как он.

1 голос
/ 03 марта 2012

Похоже, проблема заключается в типе возврата функции. Указанный тип const string, но индексирование в string возвращает char. Попробуйте следующее вместо

char read_entry( const string & s )   {   return this->DATA[1]; }
...