gpt4 book ai didi

c++ - 预期指针错误 vector 的迭代器;

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:01 26 4
gpt4 key购买 nike

我正在使用一个指针 vector 来创建一个数据结构,但发现我收到了一个似乎不清楚的错误。这是头文件中的基本代码

#include <vector>  
using namespace std;
template <typename Key, typename Value>
class ST{
class STNode{
public:
STNode(Key k, Value v) : key(k), value(v){}
~STNode(){}
Key key;
Value value;
};
typedef typename ST<Key, Value>::STNode Node;
public:
ST():v(NULL) {v = new vector<Node*>();}
~ST(){
// vector contains allocated objects
for(vector<Node*>::iterator it = v->begin(); it != v->end(); ++it)
delete (*it);
delete v;
}
private:
vector<Node*>* v;
};

我在 g++ 版本 4.6.6 上收到的错误消息是

ST.h: In destructor 'ST<Key, Value>::~ST()':  
ST.h:20: error: expected ';' before 'it'
ST.h:20: error 'it' was not declared in this scope

我已经尝试删除 for 循环并只是尝试声明迭代器并得到范围错误。我的搜索表明,通常这归因于内部类末尾缺少分号或内部类中缺少 public,但事实并非如此。指针 vector 的迭代器是否需要特殊声明?

最佳答案

您正为 C++ 语言的一个有趣怪癖所困扰。您需要添加一个 typename给你迭代器的声明( typename vector<Node*>::iterator it )。可以在问题 Why do I need to use typedef typename in g++ but not VS? 中找到更多信息。

关于c++ - 预期指针错误 vector 的迭代器;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897200/

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