0

我不能在课堂上执行 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

4

2 回答 2

1

你可以。

我猜错误与这对有关。您是否包含正确的标题:

#include <utility>

此外,如果您没有using namespace std;or usgin std::pair;,则需要编写std::pair,而不仅仅是pair.

PS 请不要使用using namespace std;,尤其是头文件。

编辑查看您的编辑,您也需要#include <vector>.
EDIT2:您尚未定义NodeId,但已将其用于typedef

于 2012-10-08T19:22:42.060 回答
1

这是一个误导性的错误信息。既没有iterator,也没有NodeId定义,因此不能在表达式中使用。

您可以使用它(使迭代器成为对前向声明类的引用): pair<iterator&,bool> insert(const Data nodeId);

并为 NodeId 添加前向声明: class NodeId;

然后做: typedef vector<NodeId&> DepList;

于 2012-10-08T19:32:34.987 回答