Что мне нужно, чтобы вернуться сюда?Перегрузка [] в подклассе C++ string
char BCheckString::operator[](int index)
{
if (index < 0 || this->length() <= index)
{
throw IndexOutOfBounds();
???Do I need to return something here???
}
else
{
return ?????;
}
}
Я попытался return this[index]
, но VS2013 говорит:.. «Не подходит функция преобразования из„BCheckString“не„символ“существует И я понятия не имею, что возвращение после броска
у меня есть:
class BCheckString : public string
{
private:
bool checkBounds();
public:
BCheckString(string initial_string);
char operator[](int index);
class IndexOutOfBounds{};
};
и
BCheckString::BCheckString(string initial_string) : string(initial_string)
{
}
char BCheckString::operator[](int index)
{
if (index < 0 || this->length() <= index)
{
//throw IndexOutOfBounds();
cout << "index out of bounds" << endl;
return 'A';
}
else
{
return 'A';
}
}
Очевидно, что это домашнее задание;)
Почему вы публично выводе из 'станд :: string'? http://stackoverflow.com/questions/6006860/why-should-one-not-derive-from-c-std-string-class – PaulMcKenzie
@PaulMcKenzie бог спаси нас. Учителя рассказывают своим ученикам о том, что они не могут быть извлечены из классов.Вот почему большинство программных продуктов обновлено. –
В любом случае, я вижу, что ответы здесь помогут вам решить вашу проблему. Я предлагаю вам также взять цитату из «Эффективного C++», которая объясняет, почему вы не должны извлекаться из 'std :: string' и показывать ее своему учителю (после того, как вы это поняли). –