gpt4 book ai didi

c++ - 使用模板类时没有合适的默认构造函数可用

转载 作者:行者123 更新时间:2023-11-28 08:25:56 24 4
gpt4 key购买 nike

我有一个像这样的模板类:

template<class T>
class List
{
private:
struct node
{
T value;
node *next, *prev;
};
}

当使用 T = myClass* 创建这个 List 类的实例时我没有问题,因为值将是一个指针,但是如果它是一个对象,创建一个节点实例会导致“没有合适的默认构造函数可用”错误,如果这个类没有默认构造函数。

我可以通过将 T 值更改为 T *值来解决这个问题,但我需要在列表中保留这些值的拷贝,这样即使它们被移出列表,它们在这里仍然有效。

处理这个问题的正确方法是什么?

最佳答案

你可以为 node 提供一个构造函数,它需要一个 T 的实例,从中可以构造一个拷贝:

template<class T>
class List
{
private:
struct node
{
node(const T & init_value) : value(init_value) {}
T value;
node *next, *prev;
};
}

这会将对 T 的要求从默认构造更改为可复制构造。列表中的任何类型都需要复制构造函数。

关于c++ - 使用模板类时没有合适的默认构造函数可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com