Еще один вопрос, иди меня! ... Во всяком случае, у меня есть 2 класса с частными конструкторами и статическими функциями, чтобы вернуть экземпляр этого класса. Все было прекрасно, у меня есть main.cpp файл, в котором мне удалось заполучить мой GameState указатель на объект, выполнив:C++: частный конструктор означает отсутствие определения объектов классов внутри заголовков?
gameState *state = gameState::Instance();
Но теперь я, кажется, есть проблема. Для удобства я хотел, чтобы и экземпляр gameState, и экземпляр actionHandler сохранили копию указателя друг к другу. Так что я попытался включить в друг друга файлах:
gameState *state;
и
actionHandler *handler;
Это, однако, не похоже на работу ... Я получаю «ошибка C2143: синтаксическая ошибка: отсутствует«; ' перед ошибками «*» на обеих этих строках ... Не можете ли вы определить переменные определенной классы в заголовке, если этот класс имеет частный конструктор? Или проблема что-то еще? Или, может быть, это потому, что указатель на экземпляр хранится как статический член?
EDIT: Спасибо, ребята! Удивительно, сколько знаний на C++ я получаю за последние пару дней .. awsome!
Вам не нужно вперед деклараций в обоих заголовки. У вас может быть один '# include' другой. –
Да, но для времени компиляции, если вы можете уйти от него, лучше использовать форвардные объявления, а не включать весь файл класса, где это возможно. – Eclipse