没有类型的声明

JT.*_*JT. 0 c++ xcode vector

我很迷惑.

我这样做:

#include <vector>

// List iteration
typedef vector<registeredObject>::iterator iterator;
typedef vector<registeredObject>::const_iterator const_iterator;
vector<registeredObject>::iterator begin(void);
vector<registeredObject>::const_iterator begin(void) const;
vector<registeredObject>::iterator end(void);
vector<registeredObject>::const_iterator end(void) const;
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

.: error: ISO C++ forbids declaration of 'vector' with no type
.: error: expected ';' before '<' token
Run Code Online (Sandbox Code Playgroud)

对于矢量的上述每个用途.这段代码在较旧的CodeWarrior中编译,但XCode抱怨.有什么问题?

有一个很好的参考?

[编辑]这是整个标题在这里

GMa*_*ckG 13

vector在命名空间中std:

typedef std::vector<registeredObject>::iterator iterator;
Run Code Online (Sandbox Code Playgroud)

另外,为什么要定义这些类型然后不使用它们?

typedef std::vector<registeredObject> container;
typedef container::iterator iterator;
typedef container::const_iterator const_iterator;

iterator begin(void);
const_iterator begin(void) const;
iterator end(void);
const_iterator end(void) const;
Run Code Online (Sandbox Code Playgroud)

还要考虑一下,也许你没有定义registeredObject.试着int确保.


现在我们看到的registeredObject是模板参数,您需要typename:

typedef typename std::vector<registeredObject> container;
typedef typename container::iterator iterator;
typedef typename container::const_iterator const_iterator;
Run Code Online (Sandbox Code Playgroud)

这就是原因.但是,不要忘记其他事情.您仍然需要std::并实际使用您定义的类型.(这必须在两个类中修复.)

请注意这是很多更普遍使用T的模板类型.那么你typedef的慷慨也很常见:

typedef T value_type;
typedef std::vector<value_type> container;
typedef typename container::iterator iterator;
typedef typename container::const_iterator const_iterator;
Run Code Online (Sandbox Code Playgroud)

并在课堂上使用这些.(即container mRegistryList;改为使用)