這是一個味道的問題,但前向聲明通常是一個很好的選擇,即使沒有循環依賴包含在頭文件中。 (我不希望提高對在這個地方討論。)所以,這裏是如何爲您的問題申請前向聲明的例子:
在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