【问题标题】:C++ - iterator for a vector of objects not compilingC ++ - 未编译的对象向量的迭代器
【发布时间】:2015-01-10 06:55:43
【问题描述】:

我有一个 Tree 类,我正在尝试遍历它们的列表并打印该类的 data 成员,我在该类中有以下两种方法:

NodeTree 中的定义:

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 **
    }
}

编译错误是:
: 错误: 在 '* it. 中请求成员 'data'。 __gnu_cxx::__normal_iterator<_iterator _container>::operator-> with _Iterator = const Tree::Node**, _Container = std::vector >',属于非类类型'const Tree::Node*'

Node 对象中的dataInt 类型,不确定是否需要定义迭代器的预期数据类型以及向量包装的数据类型以克服此错误。

希望有人在这里提供帮助。

非常感谢。

【问题讨论】:

    标签: c++ vector iterator std operator-precedence


    【解决方案1】:

    你应该写(*it)-&gt;data

    *it-&gt;data 等价于*(it-&gt;data)

    【讨论】:

    • timrau - 非常感谢您的快速回复,已解决。亚历克斯
    猜你喜欢
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多