Циклические ссылки на базовые и подклассы C ++ - PullRequest
2 голосов
/ 04 апреля 2020

У меня есть игра класса C ++ с игроком подкласса, у которого есть здание подклассов и гражданин.

class Game 
{
class player 
{
class citizen{};
class building{};
};
};

каждый из этих классов имеет свои собственные. cpp

я хочу сохраняю созданных игроков в массиве в классе игры, но в итоге мне нужно включить мой подкласс в мой базовый класс, который должен включать определение моего родительского класса.

Мне еще многое предстоит выучить в C ++, но я чувствую, что единственный способ преодолеть это поместить массив в класс проигрывателя как stati c. Есть ли лучшие способы добиться того, чего я хочу?

1 Ответ

0 голосов
/ 04 апреля 2020

Я думаю, что проблема заключается в том, что вы определили несколько классов в своем классе. В духе хорошей практики кодирования каждая логическая единица (т. Е. Ваши классы) должна определяться отдельно, а затем может быть включена в качестве членов внутри других классов (но имеет ли не свое собственное определение в классе, который содержит это).

Итак, если у объекта Game есть список объектов Player, а также объектов Citizen и Building, то вам нужно нечто, похожее на:

class Player {
    //Player definition
}

class Citizen {
    //Citizen definition
}

class Building {
    //Building definition
}

class Game {
    private:
        Player myPlayersList[4]; //an array of 4 player objects
        Citizen someCitizen; //a single Citizen object
        Building someBuilding; //a single Building object
    //more Game definition
}

Не стесняйтесь комментировать, если у вас есть какие-либо вопросы!

...