因此,基本上我们必须创建一个双重链接列表,这个列表一般是模板化的,而不是锁定到单个数据类型.我已经尝试使用gcc和msvc进行编译,两个编译器都给了我大致相同的错误,所以我假设它只是我的错误编码,而不是一个编译器或另一个编译器的古怪.
目前,我收到错误,说我的课程linkList.h
不是模板
../linkList.h:34:错误:'llist'不是模板类型
../linkList.h:143:错误:'iter'不是模板类型
../josephus.cpp:14:错误:' llist'不是模板
../josephus.cpp:14:错误:聚合'llist ppl'的类型不完整,无法定义
../josephus.cpp:15:错误:'iter'不是模板
linkList.h
template<typename T>
class iter
{
public:
iter()
{
position = sentin;
container = sentin->payload;
}
T get() const
{
assert(position != sentin);
return position->payload;
}
void next()
{
position = position->next;
}
void previous()
{
position = position->prev;
}
bool equals(iter itr) const
{
return position == itr.position;
}
private:
node *position;
llist *container;
};
Run Code Online (Sandbox Code Playgroud)
josephus.cpp
llist<int> ppl;
iter<int> pos;
int start = static_cast<int>(argv[1]) - 1;
int end = static_cast<int>(argv[2]) - 1;
Run Code Online (Sandbox Code Playgroud)
对此事的任何帮助都非常感谢
str*_*ger 12
你的前瞻声明llist
是一类:
class llist;
Run Code Online (Sandbox Code Playgroud)
然后你说它是一个模板:
template<typename T>
class llist;
Run Code Online (Sandbox Code Playgroud)
与之相似iter
.
我不知道你怎么能让它容易编译.但是,你可以制作node
和iter
'内部' llist
.