我在g ++ 4.9中遇到以下错误:
basis.cpp:16: undefined reference to `Basis::foo(int, int)'
这是头文件:
#ifndef BASIS_H
#define BASIS_H
#include "common.h"
#include <math.h>
#include "xdouble.h"
using namespace std;
class Basis {
private:
int rank;
int dim;
public:
Basis(); //Empty constructor
Basis(int r, int d); //Default constructor
void foo(int a, int b);
void bar(int a, int b);
};
#endif
basis.cpp文件如下:
#include "basis.h"
Basis::Basis()
{
rank = 0;
dim = 0;
}
Basis::Basis(int r, int d) // Default constructor
{
rank = r;
dim = d;
}
void Basis::bar(int a, int b)
{
void foo(int a, int b);
}
void Basis::foo(int a, int b)
{
}
即使我包含了基于.h的文件,我也得到了未定义的引用错误,但我无法理解为什么会这样。我做错了什么?
由于
答案 0 :(得分:1)
它看起来像是一个复制和粘贴错误。试试这个:
void Basis::bar(int a, int b)
{
foo(a, b);
}
您犯了一个错误,因为您在要调用此函数的位置复制并粘贴了函数foo的定义。