【发布时间】:2013-08-18 06:45:30
【问题描述】:
您好,我尝试创建一个列表类。 但是为了有一个列表类的变体,我使用模板将值存储在项目变量中。
下面是“List.h”
template <class ListItemType>
class List
{
public:
.........
.........
private:
struct ListNode
{
ListItemType item;
ListNode *next;
};
int size;
ListNode *head;
ListNode *find(int index) const;
};
那么如何在List.cpp中创建“ListNode *find(int index) const”函数的实现呢?
我尝试使用
template <class ListItemType>
List<ListItemType>::ListNode *List<ListItemType>::find(int index) const
{
........
}
但是有一个错误说“错误:在'List::ListNode'之前需要'typename',因为'List'是一个依赖范围”
你知道如何在 List.cpp 中实现“ListNode *find(int index) const”吗?
这是我第一次使用模板,我有点困惑。 谢谢
【问题讨论】:
-
错误很明显(模板通常不是这种情况)。你需要
typename List<ListItemType>::ListNode。 -
@juanchopanza 好的,谢谢,假设我将列表声明为指针,将其分配给实例,并且我希望该模板具有整数值。我该怎么做?
-
为什么要指针?只需创建一个对象:
List<int> my_list; -
@juanchopanza 好的。为什么,当我试图在另一个类(List
my_list;)中声明它时,我创建了。当调用该类构造函数时,会出现错误提示“未定义对 'List ::List()' 的引用” -
那是因为链接器找不到
List的默认构造函数的实现。确保所有实现都在头文件中。
标签: c++ class templates struct