gpt4 book ai didi

c++ - 没有类型的声明

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:29 26 4
gpt4 key购买 nike

我很困惑。

我这样做:

#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;

我收到如下错误:

.: error: ISO C++ forbids declaration of 'vector' with no type
.: error: expected ';' before '<' token

对于 vector 的上述每一种使用。此代码可在较旧的 CodeWarrior 中编译,但 XCode 会报错。问题是什么?

有好的引用资料吗?

[编辑] 这是整个标题 Here

最佳答案

vector位于命名空间 std:

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

此外,您为什么定义这些类型而不使用它们?

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;

还要考虑到您可能还没有定义 registeredObject。尝试使用 int 来确保。


现在我们看到registeredObject是一个模板参数,你需要typename:

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

Here's why.不过,不要忘记其他事情。您仍然需要 std::,并实际使用您定义的类型。 (这必须在您的两个类(class)中修复。)

请注意,使用T 作为模板类型更为常见。慷慨地使用 typedef 也是很常见的:

typedef T value_type;
typedef std::vector<value_type> container;
typedef typename container::iterator iterator;
typedef typename container::const_iterator const_iterator;

并在您的类里面使用这些。 (即,使用 container mRegistryList; 代替)

关于c++ - 没有类型的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1684715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com