我想實現的模板類myQueue中(邏輯結構爲環形緩衝區):爲什麼我得到錯誤c2512:沒有合適的默認構造函數可用?
// MyQueue.h
#pragma once
template<typename T>
class MyQueue
{
public:
/* interface */
MyQueue(int sizeOfBuffer);
void push(const T& elem);
T pop(void);
private:
T* m_array;
};
template<typename T>
MyQueue<T>::MyQueue(int sizeOfBuffer)
{
m_array = new T[sizeOfBuffer];
}
通常當我在一個模板類面臨着實現一個構造函數的我實現它的聲明:
#pragma once
template<typename T>
class MyQueue
{
public:
/* interface */
MyQueue(int sizeOfBuffer){// do some actions with argument sizeOfBuffer};
void push(const T& elem);
T pop(void);
private:
T* m_array;
};
由於構造函數的主體可以佔用很多空間,我決定除了聲明之外(但在相同的頭文件中)實現它以使代碼更具可讀性。
問:什麼,我做錯了,如何解決我的問題?
你在實例化的專業化中使用了什麼'T'? – 2013-03-20 21:09:53
我正在使用int。 – 2013-03-20 21:10:55
請出示完整的錯誤消息,並且還它使用代碼'myQueue中' –
2013-03-20 21:12:03