我是 C++ 模板的新手,我正为一些编译器投诉而苦苦挣扎。我在模板类中定义了一个类范围类型,并想从其他地方引用这个类型。我尝试了不同的方法来限定类型的名称,但我唯一实现的就是得到不同的错误消息。
这是我的类的定义mylist.h
,一个经典的列表实现:
template<typename T> class MyList {
public:
class ListElement; // forward declaration
typedef ListElement* LPOS; // the problematic typedef
// helper class for list elements
class ListElement {
LPOS next;
int content;
public:
ListElement(T);
LPOS getNext();
...
};
// the list itself
MyList();
ListElement* first;
LPOS add(T);
LPOS insert(T, LPOS);
... // more list functions
};
现在我想从外部使用 LPOS 类型main.cpp
:
include "mylist.h"
...
void testList (void) {
LPOS pos; // compiler error: expected ';' before pos
MyList<T>::LPOS pos; // compiler error: expected initializer before pos
MyList::LPOS pos; // compiler error: expected ';' before pos
我尝试使用“使用”,但这也没有导致任何地方。任何帮助将不胜感激。