Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对使用typename的类同时使用pair和int值_C++_Templates - Fatal编程技术网

C++ 对使用typename的类同时使用pair和int值

C++ 对使用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; } };

假设我有一个名为Queue的类,它使用一个typename

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()
必须做一些有意义的事情?假设您的
类型是邮政地址。你如何构建一个无处可去的邮政地址?它在哪个国家?如果是个人记录,您的数据库中是否有无人?