In C++, I have a class A which is friend with a class B.
I looks like inherited classes of B are not friend of class A.
I this a limitation of C++ or my mistake ?
Here is an example. When compiling, I get an error on line "return new Memento":
Memento::Memento : impossible to access private member declared in 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();
}
I could of course add FooOriginator as friend of Memento, but then, this means I would have to add all Originator-inherited classes as friend of Memento, which is something I'd like to avoid.
Any idea ?