在弄清楚这个错误是什么时遇到一些麻烦。
#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退出状态
不确定这意味着什么。一直在尝试调用函数的不同命令,但无法让它工作。
答案 0 :(得分:1)
int ListSolver::addNumbers(int *numAddress,int num, int count){
^^^^^^^^^^^^
需要使用范围运算符的类名(&#34;四个点&#34;我们在这里称之为多年 - TY panta rhei用于现场)来定义类体外的成员函数。就这样,你已经定义了一个本身成功编译的全局函数int addNames(/* ... */)
,但是由于你试图调用所述成员函数,在链接时会发生错误。