暂时使用解决方案......第一个问题。 (不确定这是否是正确的场地)。我遇到了设计问题。
我有3个班级,用户,战略和&通讯器。
我希望User有一个指向Communicator的指针,并在必要时调用函数。
我希望用户有一个类策略列表,并在必要时调用策略函数。
我希望Communicator有一个类策略列表和一个指向User的指针,并在必要时调用这些函数。
如果它有帮助,Communicator只是一个套接字连接的包装器,它监听来自客户端的消息,并将它们发送给用户或策略,以适当的方式。它还包含一个函数Send(string message)
,它发送来自User&的消息。对客户的战略。
问题是我无法编译,因为头文件最终包含在内。 任何想法将不胜感激!
答案 0 :(得分:3)
前瞻声明是你的朋友。
Strategy.h:
class User;
class Communicator;
class Strategy {
/* Definition of Strategy, restricted use of User and Communicator */
};
Strategy.cpp:
#include "Strategy.h"
#include "User.h"
#include "Communicator.h"
/* Full use of all three classes */
答案 1 :(得分:1)
您需要使用 Forward declaration 来避免循环包含标头。
请注意,前向声明对如何进一步使用不完整类型有其自身的限制。 对于不完整类型,您可以:
对于不完整类型,您不能:
答案 2 :(得分:0)
不确定你想听到什么,但是谈论c ++时,通过使用boost :: enable_shared_from_this和boost :: shared_ptr来解决循环依赖问题。
HTH