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

krugob8w  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(146)

我正试图学习C++作为一种兴趣,我遇到了一个问题,试图纳入一个向量容器。
我试图将一个向量迭代器合并到我的类中,但是在这行std::cout << nodeIterator->data;上出现了一个编译错误,我的代码片段如下。
我得到的错误:
错误:请求成员'data' in '* nodeIterator. __gnu_cxx::__normal_iterator::operator-> [with _Iterator = const FibTree::Node**,_Container = std::vector >](',它是非类类型'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();
}

谁能给予点建议?

kg7wmglp

kg7wmglp1#

这就是罪魁祸首:

Iterator = const FibTree::Node**

字符串
所以当你写nodeIterator->data时,你是在从一个没有这样成员的const FibTree::Node**请求data,因此出现错误。你需要

(*nodeIterator)->data

edit除此之外,您的代码无法编译:writeSets没有返回类型,getRoot试图访问this,这在非成员函数中无法完成,并且startwriteSets之前声明。

相关问题