Недавно в моем коде были некоторые проблемы, связанные с тем, что я теперь знаю как круговая зависимость. Короче говоря, есть два класса, Player и Ball, которые оба должны использовать информацию от другого. Оба в какой-то момент в коде будут переданы ссылки на другой (из другого класса, который будет включать оба .h файлов).
Прочитав его, я удалил файлы # include.h из каждого и приступил к предварительному объявлению. Это решило проблему возможности объявлять классы друг в друге, но теперь я остаюсь с "неполной ошибкой типа" при попытке получить доступ к переданной ссылке на объект. Кажется, есть несколько похожих примеров, хотя они часто смешиваются с более сложным кодом и его трудно сузить до основ.
Я переписал код в его простейшей форме (по сути, скелет).
Ball.h:
class Player;
class Ball {
public:
Player& PlayerB;
float ballPosX = 800;
private:
};
Player.h:
class Ball;
class Player {
public:
void doSomething(Ball& ball);
private:
};
Player.cpp:
#include "Player.h"
void Player::doSomething(Ball& ball) {
ball.ballPosX += 10; // incomplete type error occurs here.
}
Любая помощь, понимая, почему это так, будет принята с благодарностью :)