在C++中,我有一个A级是朋友与B类朋友类:继承类不是朋友吗?
我看起来像B的继承类不是A级
的朋友,我这个C++或我的错误的限制?
这里是一个例子。编译时,出现“返回新纪念品”错误:
纪念品::纪念品:不可能访问在纪念品中声明的私人成员。
class Originator;
class Memento
{
friend class Originator;
Memento() {};
int m_Data;
public:
~Memento() {};
};
class Originator
{
public:
virtual Memento* createMemento() = 0;
};
class FooOriginator : public Originator
{
public:
Memento* createMemento()
{
return new Memento; // Impossible to access private member of Memento
}
};
void main()
{
FooOriginator MyOriginator;
MyOriginator.createMemento();
}
我当然可以添加FooOriginator作为纪念品的朋友,但后来,这意味着我将不得不添加的所有始发继承类作为纪念品,这是我想避免的朋友。
有什么想法?
http://stackoverflow.com/questions/437250/friend-scope-in-c/437507 – 2009-01-29 12:59:21