C++ 对使用typename的类同时使用pair和int值
假设我有一个名为Queue的类,它使用一个typenameC++ 对使用typename的类同时使用pair和int值,c++,templates,C++,Templates,假设我有一个名为Queue的类,它使用一个typename template <typename Type> class Queue { private: int sz; struct element { Type val; element *next; element() { val = 0; next = nullptr; } };
template <typename Type>
class Queue {
private:
int sz;
struct element {
Type val;
element *next;
element() {
val = 0;
next = nullptr;
}
};
element *first, *last;
}
模板
类队列{
私人:
int sz;
结构元素{
val型;
元素*下一个;
元素(){
val=0;
next=nullptr;
}
};
元素*第一,*最后;
}
现在,如果我想创建一个int类型的队列,就没有问题了。但是,如果我想创建另一个类型为pair的队列,则行
val=0代码>抛出错误,因为0
不是pair类型。有什么方法可以避免这种情况,或者对其进行推广吗?为什么不在元素的构造函数中使用类型
?您能做到val={}代码>?谢谢你的回答,两种方法都有效,尽管我更喜欢@Den Jason的方法,因为我不必每次都键入参数。元素
可能不需要默认构造函数。可能需要参数化、复制、移动和赋值,但不是默认值。为什么您认为element()
必须做一些有意义的事情?假设您的类型是邮政地址。你如何构建一个无处可去的邮政地址?它在哪个国家?如果是个人记录,您的数据库中是否有无人?