Так что я попытался перегрузить оператор из [], и он просто не работает. Я создал этот класс:перегрузка оператора из []
class String
{
private:
char* str;
public:
String(char* str) // constructor
{
this->str = str;
}
char* Val() // returns value of this.str
{
return this->str;
}
char & operator [](int index) { return this->str[index]; }
};
и я пытался использовать его как так
String* str = new String("example");
cout << str[2] << endl;
ожидаемый результат был отпечаток буквы «а», но он не будет работать .. он работает, хотя когда я создаю такой объект:
String str("example");
cout << str[2] << endl;
любые предложения?
'(* str) [2]' должен работать, поэтому должен 'str-> operator [] (2)' –
Также обратите внимание, что ваш класс String не имеет копии строки, которую вы передаете ей конструктор. –