我正在开发一个带有模板的Pool架构:
Pool.h
template<class T>
class Pool<T>
{
public:
static T* Create()
{
...
return new T();
}
...
}
TComponent.h
template<class T>
class TComponent
{
public:
static T* Create()
{
return s_pool.Create();
}
...
protected:
TComponent();
~TComponent();
private:
static Pool<T> s_pool;
}
ExampleComponent.h
class ExampleComponent : public TComponent<ExampleComponent>
{
friend class Pool<ExampleComponent>;
...
protected:
ExampleComponent();
~ExampleComponent();
...
}
所以我可以使用:
创建一个ExampleComponentExampleComponent* test = ExampleComponent::Create();
但是,对于我定义的每个子类,我不喜欢与Pool的朋友,但由于友谊不是继承的,所以我不能在父类中执行。
反正是否有保留受保护的构造函数而忽略它?或者,我可以使用更好的架构吗?