我现在有两个具有继承的类,一个是基类并包含多态性,它是接口:
#include <vector>
#ifndef _Signal_h
#define _Signal_h
using namespace std;
typedef vector<double> DIMENTIONS_2;
class Signal {
public:
    Signal();
    Signal(const int N, const int M)
    {
        this->width = N;
        this->height = M;
    };
    virtual vector<DIMENTIONS_2> splitSignal(vector<double> &theData) const = 0;
    virtual vector<DIMENTIONS_2> filterSignal(vector<DIMENTIONS_2>&blocks) const = 0;
    virtual vector<double> returnRawSignal() const = 0;
    virtual int zerocross() const = 0;
    virtual double energy() const = 0;
    virtual int zerocrossmap() = 0;
    virtual bool readSignal() const = 0;
protected:
    vector<double> rawSignal;
    int width;
    int height;
};
#endif
从中继承和实现的类之一:
#include "Signal.h"
#ifndef _Audio_h
#define _Audio_h
typedef vector<double> DIMENTIONS_2;
class Audio : public Signal {
  public:
     Audio();
     Audio(const int N, const int M);
     vector<DIMENTIONS_2> splitSignal(vector<double>&data, int N, int M);
     vector<DIMENTIONS_2> filter(vector<DIMENTIONS_2> &data, double sumthres, double zerothres);
     double energy(vector<double> &blocks);
     int zerocross(vector<double> &block);
     int zerocrossmap(vector<double> &strippedData);
     template<typename T>
     int sign(T n);
 };
 #endif
Audio 类具有实现(.cpp),但每当我尝试使用它进行编译时:
g++ Signal.h Audio.h Audio.cpp main.cpp 
我收到以下错误:
架构 x86_64 的未定义符号:“Signal::Signal()”,引用自: ccdjMubM.o 中的 Audio::Audio() ccdjMubM.o 中的音频::Audio() ld:未找到架构 x86_64 collect2 的符号: ld 返回 1 个退出状态
有任何想法吗?