我希望有一个类层次结构,并且只能在Factory中从它创建对象。
示例:
class Base
{
protected:
Base(){};
virtual void Init(){};
friend class Factory;
};
class SomeClass : public Base
{
public://I want protected here! Now it's possible to call new SomeClass from anywhere!
SomeClass(){};
void Init(){};
};
class Factory
{
public:
template<class T>
T* Get()
{
T* obj = new T();
obj->Init();
return obj;
}
};
int main()
{
Factory factory;
SomeClass *obj = factory.Get<SomeClass>();
}
我的问题是,我希望只能从工厂创建对象,但我不想在从Base派生的每个类中声明friend class Factory
。
有没有办法在派生类中传播友情?有没有其他方法来实现这一行为?
https://stackoverflow.com/questions/13916321
复制相似问题