2013-08-02 2 views
0

У меня здесь немного сложная проблема. У меня есть 3 класса: агент, кампания и продажа - и все они должны включать друг друга, как я могу это сделать, не вызывая миллион ошибок в VS, я уже пробовал защищать ifndef и прагма один раз.Включая много файлов заголовков вместе без ошибок

+1

Форвардная декларация. Это все, что вам нужно ... – stdcall

+0

Я уже пробовал добавлять класс classINeed перед всем кодом, и он заканчивается другой ошибкой - «не может использовать класс без определения» или что-то в этом роде ... – MathMajor

+4

tl; dr. Но я заметил, что 'agent' содержит член' sale', а 'sale' содержит член' agent'. Этот рекурсивный контейнерный контейнер не будет работать. –

ответ

1

Это больше кода, чем хотелось бы видеть.
По сути, как мы уже говорили в комментариях, вы сделали все опирающимся на все остальное, что никогда не может работать.
Если вы вводите уровень косвенности, например. заставьте агент помнить идентификатор продаж, который является int, вам не понадобятся все заголовки для включения всех других заголовков. Есть ли вероятность того, что агент может сделать более одной продажи? Если вы, вместо того, чтобы sale agent_item_sales; вы могли бы хранить их в вектор

std::vector<int> agent_item_sales; 

Однако, вы никогда не использовать эту переменную-член, так что, возможно, вы можете просто удалить его?