链接错误:同一类中的未定义引用

时间:2015-05-15 07:35:28

标签: c++ class include

我在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的文件,我也得到了未定义的引用错误,但我无法理解为什么会这样。我做错了什么?

由于

1 个答案:

答案 0 :(得分:1)

它看起来像是一个复制和粘贴错误。试试这个:

void Basis::bar(int a, int b)
{
  foo(a, b);
}

您犯了一个错误,因为您在要调用此函数的位置复制并粘贴了函数foo的定义。