Разве я не могу выполнить 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
Вы можете.
Я думаю, что ошибка на линии с парой. Вы включили правильный заголовок:
#include <utility>
Кроме того, если у вас нет using namespace std;
или же usgin std::pair;
нужно написать std::pair
вместо просто pair
,
Постскриптум Пожалуйста, не используйте using namespace std;
, особенно заголовочные файлы.
РЕДАКТИРОВАТЬ Глядя на ваши правки, вам нужно #include <vector>
, тоже.
EDIT2: Вы не определили NodeId
, но вы использовали его для typedef
Это вводящее в заблуждение сообщение об ошибке. ни iterator
ни NodeId
определены, и поэтому не могут быть использованы в выражениях.
Вы могли бы работать с этим (делая итератор ссылкой на класс, объявленный вперед):
pair<iterator&,bool> insert(const Data nodeId);
и добавьте предварительную декларацию для NodeId:
class NodeId;
затем сделайте:
typedef vector<NodeId&> DepList;