Я не знаю, как перегрузить оператор квадратных скобок «[]», так как он будет вводить и выводить, что означает, что я смогу:
_class ppp;
ppp[{1,2}] = 1;
char x = ppp[{1,2}] ;
Я видел этот вопрос , и он дал этот код:
unsigned long operator [](int i) const {return registers[i];}
unsigned long & operator [](int i) {return registers[i];}
Это не сработало для меня :-( Я попробовал и сделал это:
struct coord {
int x;
int y;
};
class _map
{
public:
struct coord c{3,4};
char operator[](struct coord) const // this is supposed to suppor output
{
cout << "this1" << endl;
return 'x';
}
char& operator[](struct coord) // this is supposed to support input
{
cout << "this2" << endl;
return c.x;
}
void operator= (char enter)
{
cout << enter;
}
};
тогда я сделал в основном:
_map ppp;
ppp[{1,2}] = 1;
char x = ppp[{1,2}] ;
Это дало мне:
this2
this2
, что означает, что я не смог создать две функции сравнения, которые позволят мне сделать две функции сравнения, такие как:
ppp[{1,2}] = 1;
char x = ppp[{1,2}] ;
****************** ПЕРЕД РЕДАКТИРОВАНИЕМ **************************
Я пытаюсь переопределить квадратный оператор [] для ввода и вывода информации. в то время как ввод в квадратные скобки является структурой.
Я пробовал это на основе этого вопроса :
struct coord {
int x;
int y;
};
class _map
{
public:
char operator[](struct coord) const // this is supposed to suppor output
{
cout << "this1" << endl;
return 'x';
}
char& operator[](struct coord) // this is supposed to support input
{
cout << "this2" << endl;
char a = 'a';
return a;
}
void operator= (char enter)
{
cout << enter;
}
};
тогда я сделал в основном:
_map ppp;
ppp[{1,2}] = 1;
char x = ppp[{1,2}] ;
Это дало мне:
this2
this2
При изменении ввода оператора ввода на int все хорошо:
char operator[](int coord) const
{
cout << "this1" << endl;
return 'x';
}
тогда я сделал в основном:
_map ppp;
ppp[{1,2}] = 1;
char x = ppp[2] ;
тогда я получаю:
this2
this1
Это из моего H.W. но я просто спрашиваю о вещах, которые не являются основной частью HW, также я работаю над этой маленькой вещью некоторое время ...