【发布时间】:2014-01-10 14:19:46
【问题描述】:
我正在制作一种基于链表的时髦数据结构,其中每个元素都与一个唯一的堆分配的内部迭代器相关联,该迭代器指向它(外部迭代器分别指向这些迭代器)。这个想法是让迭代器在其元素被删除时不会失效,而是发现自己指向 l.end()
无论如何,我遇到了很多我不明白的错误。这是一个无法编译的类,但我不明白为什么。
template<class T>
class pointer_node {
public:
pointer_node(const T& t) :
t(t), p_iter() {
}
pointer_node(T&& t) :
t(move(t)), p_iter() {
}
private:
T t;
std::shared_ptr<const std::list<pointer_node<T>>::iterator> p_iter;
};
我得到的错误是:
../src/pointer_list.h:28:24: 错误:ISO C++ 禁止声明没有类型的“类型名称”[-fpermissive] ../src/pointer_list.h:28:60: 错误:模板参数 1 无效
谁能解释这个错误?
【问题讨论】:
标签: c++ templates iterator constants shared-ptr