typedef внутри класса

Разве я не могу выполнить 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

Решение

Вы можете.

Я думаю, что ошибка на линии с парой. Вы включили правильный заголовок:

#include <utility>

Кроме того, если у вас нет using namespace std; или же usgin std::pair;нужно написать std::pairвместо просто pair,

Постскриптум Пожалуйста, не используйте using namespace std;, особенно заголовочные файлы.

РЕДАКТИРОВАТЬ Глядя на ваши правки, вам нужно #include <vector>, тоже.
EDIT2: Вы не определили NodeId, но вы использовали его для typedef

1

Другие решения

Это вводящее в заблуждение сообщение об ошибке. ни iteratorни NodeId определены, и поэтому не могут быть использованы в выражениях.

Вы могли бы работать с этим (делая итератор ссылкой на класс, объявленный вперед):
pair<iterator&,bool> insert(const Data nodeId);

и добавьте предварительную декларацию для NodeId:
class NodeId;

затем сделайте:
typedef vector<NodeId&> DepList;

1

По вопросам рекламы [email protected]