我有一个名为SkipList
的模板类和一个名为Iterator
的嵌套类。
SkipList
遵循以下定义:
template <typename Key_T, typename Mapped_T, size_t MaxLevel = 5>
class SkipList
{
typedef std::pair<Key_T, Mapped_T> ValueType;
public:
class Iterator
{
Iterator (const Iterator &);
Iterator &operator=(const Iterator &);
Iterator &operator++();
Iterator operator++(int);
Iterator &operator--();
Iterator operator--(int);
private:
//some members
};
Iterator
有一个复制构造函数,我在它定义之后在类之外声明它:
template <typename Key_T, typename Mapped_T,size_t MaxLevel>
SkipList<Key_T,Mapped_T,MaxLevel>::Iterator(const SkipList<Key_T,Mapped_T,MaxLevel>::Iterator &that)
但是我收到以下错误:
SkipList.cpp:134:100: error: ISO C++ forbids declaration of ‘Iterator’ with no type [-fpermissive]
SkipList.cpp:134:100: error: no ‘int SkipList<Key_T, Mapped_T, MaxLevel>::Iterator(const SkipList<Key_T, Mapped_T, MaxLevel>::Iterator&)’ member function declared in class ‘SkipList<Key_T, Mapped_T, MaxLevel>’
有什么问题?
答案 0 :(得分:3)
试试这个:
template <typename Key_T, typename Mapped_T,size_t MaxLevel>
SkipList<Key_T,Mapped_T,MaxLevel>::Iterator::Iterator
(const SkipList<Key_T,Mapped_T,MaxLevel>::Iterator &that) { ...
您忘记使用SkipList::Iterator::Iterator
限定Iterator复制构造函数,因此它正在查找名为SkipList::Iterator
的SkipList成员函数,因此错误“无成员函数”。