我想要一个模板化的缓冲池,并且需要一种方法来专门化模板以在默认构造函数不可用时进行处理。
我需要类保存一些用于初始化模板化缓冲区项的数据,但我想保留该类的其余功能。
以下代码是我想要的简单示例,其中我在专用类中替换了NewBuffer。但是我看不到让GetBuff看到专门的方法。
class Buffer{
public:
Buffer(int) {}
};
template<class B> class Pool {
public:
B* GetBuff() { return NewBuffer(); }
protected:
virtual B* NewBuffer() { return new B(); }
};
class SpecialPool : public Pool<Buffer> {
public:
SpecialPool(int _A) :A(_A) {}
virtual Buffer* NewBuffer() { return new Buffer(A); }
int A;
};