我不能在课堂上执行typedef吗?
#include <vector>
using namespace std;
class List {
public:
typedef int Data;
class iterator;
pair<iterator,bool> insert(const Data nodeId); //<-error
private:
class Node {
typedef vector<NodeId> DepList;//<-error
};
}
我收到错误missing type specifier - int assumed. Note: C++ does not support default-int
答案 0 :(得分:1)
你可以。
我猜这个错误与该对一致。你有没有包括正确的标题:
#include <utility>
此外,如果您没有using namespace std;
或usgin std::pair;
,则需要撰写std::pair
,而不只是pair
。
P.S。请不要使用using namespace std;
,尤其是头文件。
编辑查看您的修改,您也需要#include <vector>
EDIT2 :您尚未定义NodeId
,但已将其用于typedef
答案 1 :(得分:1)
这是一个误导性的错误消息。 iterator
和NodeId
都未定义,因此无法在表达式中使用。
你可以使用它(使迭代器成为对前向声明的类的引用):
pair<iterator&,bool> insert(const Data nodeId);
并为NodeId添加前向声明:
class NodeId;
然后做:
typedef vector<NodeId&> DepList;