Это можно сделать бесконечным количеством способов. Можно установить оба значения в 0. Можно установить одно значение в 1, другое в -1. И так далее. Определитесь четче, что вам нужно.
Никого не смутило, что ARRAY[j] и ARRAY[a][j] - имеют разные типы? Если у первого тип Т, то у второго T[] (т.e массив T). Что Вы хотите получить сравнивая (а позже складывая) один помидор с массивом помидоров?
Разве тип где то декларировали? Может это просто класс с перегруженными операторами, например Код (C): class A { public: A() { this->value = -1; } int& operator = (int value) { this->value = value; return this->value; } bool operator == (int value) const { return this->value == value; } int& operator[](int dummy_index) { return this->value; } int value; };
Алексей. я сам люблю так пошутить, но надо дорабатывать до конца - шутить, так уж по Гамбургскому. В Вашем классе никак не отработана ситуация [][]. Вот когда отработаете, тогда и посмотрим какие там типы ))
Как раз проверял на выражении if(ARRAY[a][j]==0 || ARRAY[j] == 0) предварительно проинициализировав ARRAY[a][j] и ARRAY[j], убедился что попадаю в операторы. Сначала присвоил ARRAY[a][j] = 0 и ARRAY[j] = 1, при проверке условий попал в индексный оператор, честно сработало первое условие. Затем инициализировал ARRAY[a][j] = 1 и ARRAY[j] = 0, при проверке условий сначала попал в индексный оператор, после в оператор bool и сработало второе условие. А что не так? П.С. Код (C): void test() { A ARRAY[10]; // A - это как раз класс и их ах 10 штук, и ситуация [][] замечательно обрабатывается }
Не, ну это не строго! Нет, чтобы [] возвращал, что-то, что само по себе имеет [] - не нужно было бы при объявлении массив заводить. А так ... халтура ))))
Спойлер: Код Код (C): #include <iostream> class A { public: bool operator == (int value) const { return this->array[0] == value; } int& operator = (int value) { this->array[0] = value; return this->array[0]; } int& operator[](int index) { return this->array[index]; } private: int array[10]; }; class B: public A { public: A& operator[](int index) { return this->array[index]; } private: A array[10]; }; int main() { B ARRAY; int a = 1, j = 2; ARRAY[a][j] = 1; ARRAY[j] = 1; if (ARRAY[a][j] == 0 || ARRAY[j] == 0) { std::cout << "condition at line: " << __LINE__ << std::endl; } else { std::cout << "not in if condition at line: " << __LINE__ << std::endl; } ARRAY[a][j] = 0; ARRAY[j] = 1; if (ARRAY[a][j] == 0 || ARRAY[j] == 0) { std::cout << "condition at line: " << __LINE__ << std::endl; } else { std::cout << "not in if condition at line: " << __LINE__ << std::endl; } ARRAY[a][j] = 1; ARRAY[j] = 0; if (ARRAY[a][j] == 0 || ARRAY[j] == 0) { std::cout << "condition at line: " << __LINE__ << std::endl; } else { std::cout << "not in if condition at line: " << __LINE__ << std::endl; } return 0; } Спойлер: Вывод Код (C): not in if condition at line: 36 condition at line: 41 condition at line: 48