递归添加内部类函数c ++的数组

时间:2016-10-22 20:46:12

标签: c++ recursion

在弄清楚这个错误是什么时遇到一些麻烦。

#include <iostream>

class listSolver{
    private:
        int arraySize;
        int *address;
    public:
        listSolver(int *arrayAddress, int size);
        ~listSolver();
        int forLoopSolver();
        int whileLoopSolver();
        int recursiveSolver();
        int addNumbers(int *numAddress,int num, int count);
};

listSolver::listSolver(int *arrayAddress,int size){
    arraySize = size;
    address = arrayAddress;
}

listSolver::~listSolver(){
}

int listSolver::recursiveSolver(){
    int *funcAddress = address;
    int size = arraySize;
    int solution = 0;
    return this->addNumbers(funcAddress,size,solution);
}
int addNumbers(int *numAddress,int num, int count){
    if(count == 0){
            return num+*numAddress;
    }
    else{
            count--;
            num+=*numAddress;
            numAddress++;
            return listSolver::addNumbers(numAddress,num,count);
    }
}

g ++编译器给了我

  

/tmp/ccuy9bHM.o:在函数'listSolver :: recursiveSolver()'中:   problem1.cpp :(。text + 0x1e2):对'listSolver :: addNumbers(int *,int,int)'的未定义引用   collect2:错误:ld返回1退出状态

不确定这意味着什么。一直在尝试调用函数的不同命令,但无法让它工作。

1 个答案:

答案 0 :(得分:1)

int ListSolver::addNumbers(int *numAddress,int num, int count){
    ^^^^^^^^^^^^

需要使用范围运算符的类名(&#34;四个点&#34;我们在这里称之为多年 - TY panta rhei用于现场)来定义类体外的成员函数。就这样,你已经定义了一个本身成功编译的全局函数int addNames(/* ... */),但是由于你试图调用所述成员函数,在链接时会发生错误。