Я делаю настольную игру, в которой игра заканчивается, когда одна фигура разрушается, например, король умирает в шахматах.
Теперь у меня есть возможность просмотреть все мои объекты и увидеть, что, например, БЫЛО два указателя на объекты короля, а теперь есть только один, поэтому игра окончена и команда с оставшимся королем выиграла.
Однако мне было интересно, можно ли вместо этого сказать что-то вроде:
if(king_destructor is called){
game over;}
Но после небольшого поиска я не нашел способа сделать это.
В частности, моя структура класса:
class pieces{}
class king : public pieces{}
, где элементы - это абстрактный класс, а для каждой отдельной части есть производные классы. В производном классе для «королевской» фигуры есть ее деструктор. В противном случае:
class game_board{}
, который является другим абстрактным классом, который имеет элементы данных, которые являются указателями на объекты частей. Если быть точным, у меня есть переменная карты, которая принимает положение фигуры на доске в качестве ключа и указатель на объект фигуры в качестве значения.
Наконец, у меня есть производный класс:
class game_rules: public game_board{}
именно в этом классе у меня есть функция, которая определяет, когда игра окончена.
Я экспериментировал с использованием переменной stati c, которая модифицируется деструктором 'king', но это выходит за рамки моего класса game_rules.
Кто-нибудь знает, возможно ли такое?