C ++ Vector数据类型编译器错误问题与我定义的类的成员

时间:2014-05-31 11:28:44

标签: c++ vector compiler-errors stdvector

我正在尝试学习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();
}

有人能给我任何建议吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

这是罪魁祸首:

Iterator = const FibTree::Node**

所以当你写nodeIterator->data时,你从data请求const FibTree::Node**没有这样的成员因此错误。你需要

(*nodeIterator)->data

修改除此之外,您显示的代码无法编译:{{1​​}}没有返回类型,writeSets尝试访问getRoot,但不能在非成员函数中完成,thisstart之前声明。请发布下次重现错误的确切代码:https://stackoverflow.com/help/mcve