gpt4 book ai didi

c++ - 构造函数带参数时如何实例化模板类

转载 作者:行者123 更新时间:2023-11-28 00:31:15 27 4
gpt4 key购买 nike

我正在尝试创建类 Queue<T> 的新对象, 具有以下内容:

Queue<char[40]> *q = new Queue<char[40]>(100);

然后,我想用这个q在另一个类构造函数上:

Interface<char[40]> i(q);

如果我只是使用它,我会收到一条错误消息 invalid conversion from ‘Queue<char [40]>*’ to ‘int’ ,我认为这意味着我正在尝试传递 q 的值,这是指向它的指针而不是实际值。美好的。然后我重新定义了 Interface<T>构造函数接收指针而不是值本身,所以签名是

Interface(DataStructure<T>& q);

因为 Queue 扩展了 DataStructure。出于某种原因,现在 q 的实例化失败:

undefined reference to `Queue<char [40]>::Queue(int)

但我很确定我已经用一个 INT 参数编写了构造方法

template<typename T>
Queue<T>::Queue(int size): DataStructure<T>(size) {
std::cout << size << std::endl;
}

那我到底为什么会收到这个错误?玩弄指针简直是一团糟,我现在无论如何都不知道该怎么办。

最佳答案

此代码 Queue<T>::Queue(int size)建议您将定义放在源文件中。如果您使用模板,则所有代码都必须在头文件中。 (还有其他方法,但这是最简单的)。

关于c++ - 构造函数带参数时如何实例化模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22850440/

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