奇怪的C++模板问题

use*_*741 5 c c++ gcc

因此,基本上我们必须创建一个双重链接列表,这个列表一般是模板化的,而不是锁定到单个数据类型.我已经尝试使用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.

我不知道你怎么能让它容易编译.但是,你可以制作nodeiter'内部' llist.