我想实现的模板类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