【发布时间】:2011-05-31 18:02:42
【问题描述】:
我在不同的 h 文件中定义了两个类,每个类都有一些私有函数。但是,我希望能够从另一个类中的函数访问每个类中的一个函数。
例如...
//apple.h:
class Beets;
class Apple
{
public:
double ShadeUsed();
private:
void Fruit();
bool RedRoots();
friend bool Beets::BlueRoots(); //<--- Error b/c not declared yet
};
//beets.h
#include "apple.h"
class Beets
{
public:
double SunNeeded();
private:
void Leaves();
bool BlueRoots();
friend bool Apple::RedRoots();
};
目标是每个类中只有一个函数可以访问其他类的私有内容。例如,只有根函数才能访问其他类的私有内容。但是,如果不包含循环,我就无法实现互惠友谊。
我考虑过让整个 Beets 类成为 Apples 的朋友,这样类预声明就足够了,但我宁愿只允许一个函数私有访问。
有什么建议吗? 提前致谢, 马特。
(P.S.为什么每个“提前谢谢”,“Matt”之间的回车不会导致换行符?)
【问题讨论】:
-
在回答您的 P.S. 时,您需要两个回车来生成换行符。哦,我正在闪回this question(简短的回答是你不能这样做)。
-
@Chris,我想我只需要声明整个班级为朋友。 @PS如果我做两个回车,它们之间就会有一整行。我只希望它们位于不同的行上。
-
循环依赖通常是设计问题的征兆,我会尝试重构它以打破依赖关系。
标签: c++ friend circular-dependency