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

Linking error: undefined reference within the same class

本文关键字:一类 未定义 引用 错误 链接      更新时间:2023-10-16

我在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

base .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)
{
}

即使我包括base .h文件,我得到未定义的引用错误,我不明白为什么会发生这种情况。我做错了什么?

谢谢

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

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

你犯了一个错误,因为你复制并粘贴了函数foo的定义在你想调用这个函数的地方