我正在尝试学习C ++作为一种兴趣,并且我想出一个尝试合并Vector容器的问题。
任何人都可以帮助我,我正在尝试将矢量迭代器合并到我的类中,但是我在这行std::cout << nodeIterator->data;
上遇到编译错误,我的代码片段在下面。
我得到的错误:
错误:请求'* nodeIterator中的成员'data'。 __gnu_cxx :: __ normal_iterator ::操作符 - &GT; [使用_Iterator = const FibTree :: Node **,_Container = std :: vector&gt;]()',这是非类型'const FibTree :: Node *'
class Node {
public:
int data;
Node const* left;
Node const* right;
Node const* parent;
int n;
int level;
int index;
Node (void);
};
// Get root method
Node const* getRoot(void) {
return this->root;
}
void start(Node const* root) {
std::vector<Node const*> setsList;
std::cout << root->data;
writeSets(setsList, root);
}
writeSets(std::vector<Node const*> &setsList, Node const* cur) {
std::vector<Node const*>::iterator nodeIterator;
// Displays all preceding left values
for (nodeIterator = setsList.begin();nodeIterator != setsList.end(); nodeIterator++)
{
std::cout << nodeIterator->data; //*** Get Compile error this line ***
}
std::cout << cur->left->data;
std::cout << cur->right->data;
setsList.push_back(cur->left);
writeSets(setsList,cur->right);
setsList.pop_back();
}
有人能给我任何建议吗?
非常感谢
答案 0 :(得分:1)
这是罪魁祸首:
Iterator = const FibTree::Node**
所以当你写nodeIterator->data
时,你从data
请求const FibTree::Node**
没有这样的成员因此错误。你需要
(*nodeIterator)->data
修改除此之外,您显示的代码无法编译:{{1}}没有返回类型,writeSets
尝试访问getRoot
,但不能在非成员函数中完成,this
在start
之前声明。请发布下次重现错误的确切代码:https://stackoverflow.com/help/mcve