Это класс, вещь - член, вещь - параметр ... и вы забыли, что если вы хотите получить доступ к члену в вызове operator=
, вам следует использовать _thing.thing
.
Ваш выбор имен довольно плох, настолько плох, что он даже запутал вас, когда вы писали код (и если вам было легко ошибиться, попробуйте представить, насколько проще было бы кому-то другому запутаться в этом кодеили даже для вас через несколько месяцев).
А как насчет вызова, например, класса Array
, члена data
и параметра other
?Я также предложил бы избегать использования начальных подчеркиваний в именах, они уродливы и опасны одновременно (знаете ли вы все правила C ++ относительно того, где можно ставить подчеркивания в именах и сколько из них вам разрешено использовать?).
При разработке класса или функции вам нужно учесть много вещей, и имя класса или имя функции важно, но это один из многих факторов.Но для элемента данных или переменной вам нужно только выбрать тип и имя, и оба они являются наиболее важными.
Поэтому, пожалуйста, приобретите привычку внимательно относиться к именам, особенно к переменным.Относительная важность для них огромна.Переменные и члены-данные - это просто имена ... имя - фактически единственная причина, по которой в программировании нам нравится использовать переменные (вместо этого компьютер использует только числовые адреса и совершенно им доволен).
Одизайн класса вы, вероятно, также хотели бы определить operator[](int)
...
int *operator[](int index) { return data[index]; }
Таким образом вы сможете писать код, подобный
Array a(m);
a[0][0] = 42;
без необходимости явно ссылаться наdata
(и, кстати, это дополнение также сделает ваш оригинальный код работающим ... но все же исправит имена !!).