我認爲這很容易,但我還沒有得到這個工作。我想使用模板來定義類的靜態無符號字符數組成員數據成員的大小。我在我的兩個函數上使用模板來定義正在使用的數據類型,並且工作正常。我在想這樣的事情:使用模板來定義類中的靜態數組
template<unsigned S>
class Buff
{
private:
static unsigned char buffer[S];
int offset;
public:
pAllocBuff(){offset=0;};
template <typename T>
T* New(T, int);
template <typename T>
T* New(T);
};
這個想法是New(T,int)從緩衝區中爲數據類型數組分配內存。
即:char* i = myBuff.New<char>('\0',15); //allocate 15 byte array to i from buffer and initialized to '\0'
或新(T)從所述緩衝器用於單個數據類型
即分配內存:string* j = myBuff.New<string>("Hello Stack Overflow!"); //allocate memory to string object j from buffer and initialize
如果我更換 'S' 與BUFFSIZE和#定義BUFFSIZE 1024 * 1024(或其他),一切都很好。但我想這樣做,以便緩衝區的大小可以爲不同的Buff實例定義。因此,像:
Buff<1024*1024> myBuff;
當我做到這一點,在我的課的所有成員函數被標記爲缺少模板參數,即使S有沒有關係他們。
編輯:我得到這個工作與下面的建議。我猜IM困惑,爲什麼
「模板」
必須在類中的每個功能上面,即使S沒有在該函數中使用。這只是因爲它在課堂上才需要嗎? 感謝您的知識!
你需要顯示實際的錯誤,以及使用它的實際代碼。在有問題的版本中 – sehe
編譯器?版? – dyp
是'pAllocBuff()'錯字?它應該是'Buff()' – 2013-04-12 22:25:05