Скажем, у нас есть класс с закрытым конструктором. Через friend
мы можем разрешить некоторому определенному классу (классам) создавать объекты этого класса:
class Foo
{
friend class Bar;
private:
Foo();
};
class Bar
{
Bar()
{
//create a Foo object
}
};
А что еслиЯ хочу противоположность friend
, где Foo
выглядит так:
class Foo
{
//enemy/foe??? class Bar; (if only)
public:
Foo();
};
И тогда никакой метод Bar
не может получить доступ к конструктору Foo
/ создать объект Foo
, нодругие классы могут (потому что это public
).
class Bar
{
Bar()
{
Foo foo; //compiler error
}
};
Возможна ли такая конструкция, или я застрял с сохранением Foo
закрытым и добавлением друзей для всех классов?