C++ C++;类模板错误
当我试图使用我的类的构造函数时,我得到以下错误: 错误C2955:“myQueue”:使用类模板需要模板参数列表 及 错误C2512:“myQueue”:没有合适的默认构造函数可用 这是一个头文件:C++ C++;类模板错误,c++,templates,C++,Templates,当我试图使用我的类的构造函数时,我得到以下错误: 错误C2955:“myQueue”:使用类模板需要模板参数列表 及 错误C2512:“myQueue”:没有合适的默认构造函数可用 这是一个头文件: #ifndef myQueue_ #define myQueue_ template<typename type> class myQueue{ public: myQueue(); ~myQueue(); type dequeue(); void en
#ifndef myQueue_
#define myQueue_
template<typename type>
class myQueue{
public:
myQueue();
~myQueue();
type dequeue();
void enqueue(type t);
private:
int size;
type* arr;
int curSize;
};
#endif
您没有正确使用模板。模板类和方法应该在头文件中声明,只有完整的专门化应该存储在源文件中。因此,您的头文件应该如下所示:
#ifndef myQueue_
#define myQueue_
template<typename type>
class myQueue{
public:
myQueue();
~myQueue();
type dequeue();
void enqueue(type t);
private:
int size;
type* arr;
int curSize;
};
template<typename type>
myQueue<type>::myQueue()
{
size = 10;
arr = new type[size];
}
template<typename type>
myQueue<type>::~myQueue()
{
delete arr[];
arr = NULL;
}
#endif
\ifndef myQueue_
#定义我的队列_
模板
类myQueue{
公众:
myQueue();
~myQueue();
类型dequeue();
无效排队(t型);
私人:
整数大小;
类型*arr;
int草体化;
};
模板
myQueue::myQueue()
{
尺寸=10;
arr=新类型[尺寸];
}
模板
myQueue::~myQueue()
{
删除arr[];
arr=NULL;
}
#恩迪夫
正如Caduchon所指出的,您应该在队列使用中声明队列的类型。正如Wojciech Frohmberg所解释的,您必须在*.h文件而不是*.cpp文件中定义该类,因为当使用特定类型调用该类时,代码实际上是编译的 你的主要观点是错误的
int main(){
myQueue<YourType>* a = new myQueue<YourType>; // for pointer
myQueue<YourType> b; // for instance
}
intmain(){
myQueue*a=新建myQueue;//用于指针
myQueue b;//例如
}
请同时检查。1>Blank.obj:错误LNK2019:未解析的外部符号“public:\u thiscall myQueue::~myQueue(void)”(?1$myQueue@H@@QAE@XZ)在函数\u main 1>Blank.obj中引用:错误LNK2019:未解析的外部符号“public:\u thiscall myQueue::myQueue(void)”(?0$myQueue@H@@QAE@XZ)在函数_main中引用
#ifndef myQueue_
#define myQueue_
template<typename type>
class myQueue{
public:
myQueue();
~myQueue();
type dequeue();
void enqueue(type t);
private:
int size;
type* arr;
int curSize;
};
template<typename type>
myQueue<type>::myQueue()
{
size = 10;
arr = new type[size];
}
template<typename type>
myQueue<type>::~myQueue()
{
delete arr[];
arr = NULL;
}
#endif
int main(){
myQueue<YourType>* a = new myQueue<YourType>; // for pointer
myQueue<YourType> b; // for instance
}