这是一个味道的问题,但前向声明通常是一个很好的选择,即使没有循环依赖包含在头文件中。 (我不希望提高对在这个地方讨论。)所以,这里是如何为您的问题申请前向声明的例子:
在Manager.h:
// Forward declaration:
class Specialist;
// Class declaration:
class Manager
{
// Manager declarations go here.
// Only pointers or references to
// the Specialist class are used.
};
在Manager.cpp:
#include "Specialist.h"
// Manager definitions/implementations
// using the Specialist class go here.
// Full Specialist functionality can be used.
在Specialist.h:
// Forward declaration:
class Manager;
// Class declaration:
class Specialist
{
// Specialist declarations go here.
// Only pointers or references to
// the Manager class are used.
};
在Specialist.cpp:
#include "Manager.h"
// Specialist definitions/implementations
// using the Manager class go here.
// Full Manager functionality can be used.
你能告诉我们你有什么样的样品,以及你有什么问题? – 2010-10-25 21:18:41
我见过这个非常类似的问题最近问几次 - 这是最近一次http://stackoverflow.com/questions/4016471/c-circular-reference-problem – 2010-10-25 21:40:01
@Greg - 问题是类似的,但是我我不仅对解决循环依赖感兴趣,而且对我使用的模式是否因某种原因有缺陷有所了解。 – JnBrymn 2010-10-26 19:16:10