将对象传递给函数C ++

时间:2015-02-24 04:30:08

标签: c++ function class header-files

我在我的某个程序中无法取消我的AVL树类,我不确定如何包含我的类并将其与现有代码一起使用,这就是问题所在:

我有一个AVL树类:AVL_tree.hAVL_tree.cpp

我还有main.cpp个文件

functions.cppfunctions.h,其中我存储main.cpp中使用的一些函数

因此,在main()中,我从AVL树类创建了一个对象。我想将此对象与其他一些数据(用于更改树中存储的信息)一起传递给我functions.cpp中的一个函数。这是我无法让它发挥作用的地方。我得到了几个像这样的错误:

main.o:main.cpp|| undefined reference to `AVL_Tree::AVL_Tree()'|
main.o:main.cpp|| undefined reference to `process_vector(std::vector<int, std::allocator<int> >, AVL_Tree&)'|

如何将必要的信息传递给我的函数以修改我的树?

我的代码文件的简化版本:

的main.cpp

#include <vector>
#include "functions.h"
#include "AVL_tree.h"
using namespace std;

int main() {
    AVL_Tree tree;
    vector<int> V;

    V.push_back(11);
    V.push_back(4);
    V.push_back(7);

    process_vector(V, tree);

    return 0;
}

functions.h

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#include<vector>
#include"AVL_tree.h"
using namespace std;

void process_vector(vector<int> V, AVL_Tree &tree);

#endif // FUNCTIONS_H

functions.cpp

#include<vector>
#include"functions.h"
#include"AVL_tree.h"
using namespace std;

void process_vector(vector<int> V, AVL_Tree &tree){
    for(int i=0;i<vector.size();i++){
        key = vector[i]
        tree.AddLeaf(key);
    }
    return;
}

AVL_tree.h

#ifndef AVL_TREE_H
#define AVL_TREE_H

class AVL_Tree{

private:
    struct node{
        int key;
        node* left;
        node* right;
    };

    node* root;
    node* CreateLeaf(int key);
    node* AddLeafPrivate(int key, node* Ptr);
    int HeightPrivate(node* Ptr);
    int BFactorPrivate(node* Ptr);

public:
    AVL_Tree();
    void AddLeaf(int key);
    int Height(int key);
    int BFactor(int key);

};

#endif // TREE

0 个答案:

没有答案