C++ - 不编译对象向量的迭代器
C++ - iterator for a vector of objects not compiling
我有一个 class 树,我试图遍历它们的列表并打印 class 的 data
成员,我有以下两种方法class:
Node
定义 Tree
:
class Node {
public:
int data;
Node const* left;
Node const* right;
};
writeSets
方法的片段:
void Tree::writeSets(std::vector<Node const*> &list, Node const* root) {
if (root == NULL) {
return;
}
// Displays all preceding left values
for (std::vector<Node const*>::iterator it = list.begin(); it != list.end(); it++) {
std::cout << *it->data;
*** Getting compile error here **
}
}
编译错误为:
: 错误:请求成员 'data' in '* it. __gnu_cxx::__normal_iterator<_Iterator, _Container>::operator-> with _Iterator = const Tree::Node**, _Container = std::vector >',非class类型'const Tree::Node*'
Node
对象中的 data
是 Int
类型,不确定我是否需要定义迭代器的预期数据类型以及向量包装的数据类型克服这个错误。
希望有人能提供帮助。
非常感谢。
你应该写 (*it)->data
.
*it->data
等同于 *(it->data)
.
我有一个 class 树,我试图遍历它们的列表并打印 class 的 data
成员,我有以下两种方法class:
Node
定义 Tree
:
class Node {
public:
int data;
Node const* left;
Node const* right;
};
writeSets
方法的片段:
void Tree::writeSets(std::vector<Node const*> &list, Node const* root) {
if (root == NULL) {
return;
}
// Displays all preceding left values
for (std::vector<Node const*>::iterator it = list.begin(); it != list.end(); it++) {
std::cout << *it->data;
*** Getting compile error here **
}
}
编译错误为:
: 错误:请求成员 'data' in '* it. __gnu_cxx::__normal_iterator<_Iterator, _Container>::operator-> with _Iterator = const Tree::Node**, _Container = std::vector >',非class类型'const Tree::Node*'
Node
对象中的 data
是 Int
类型,不确定我是否需要定义迭代器的预期数据类型以及向量包装的数据类型克服这个错误。
希望有人能提供帮助。
非常感谢。
你应该写 (*it)->data
.
*it->data
等同于 *(it->data)
.