gpt4 book ai didi

c++ - 模板类的 child 也必须是模板类吗?

转载 作者:太空狗 更新时间:2023-10-29 21:48:45 27 4
gpt4 key购买 nike

我需要有一个类“LinkedSortedList”,它是“SortedList”的子类。 SortedList 是一个模板类,那么我怎么能有一个不是模板的子类呢?这里唯一的问题是我需要同时拥有 LinkedSortedList.h 和 .cpp,但显然你不能将模板的定义保留在 .cpp 中,它们必须使用 .h 中的方法/函数声明来定义,所以我不会有 LinkedSortedList.cpp ....或者我只是个白痴?

最佳答案

好吧,假设您的 LinkedSortedList仅适用于类型 int (否则它需要自己是一个模板)。

首先编译器需要知道 SortedList<int>必须在 sorted_list.cpp 时编译(或模板实现的任何地方)可用。编译后,链接器将找到它并能够成功链接它。

所以在linked_sorted_list.h你会有这样的东西:

#include "sorted_list.h"

class LinkedSortedList : public SortedList<int> {
...
}

sorted_list.cpp , 最后你必须包括这一行:

template class SortedList<int>;

或者(这是更好的方法)您可以将模板的定义放入一个包含在 .icc 中的具有特殊扩展名的文件(我倾向于您使用 sorted_list.h) :

template <class type>
class SortedList {
...
}

#include "sorted_list.icc"

现在您可以即时编译任何类型的排序列表。

关于c++ - 模板类的 child 也必须是模板类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082225/

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