在 C++ 中,我有一个 A 类,它是 B 类的朋友。
我看起来 B 的继承类不是 A 类的朋友。
我这是 C++ 的限制还是我的错误?
这是一个例子。编译时,“return new Memento”行出现错误:
Memento::Memento :无法访问在 Memento 中声明的私有成员。
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 添加为 Memento 的朋友,但是,这意味着我必须将所有 Originator 继承的类添加为 Memento 的朋友,这是我想避免的。
任何的想法 ?