错误 LNK2019:未解析的外部符号"公共:__thiscall信号

error LNK2019: unresolved external symbol "public: __thiscall Signal

本文关键字:公共 thiscall 信号 符号 LNK2019 错误 外部      更新时间:2023-10-16

当我调用main()函数时,我得到错误:

错误2错误LNK2019:未解析的外部符号"public:__thiscall Signal::Signal(void)"(??0$Signal@H@@QAE@XZ)在函数"public:__thiscall Img::Img(int,int)"中引用(??0$Img@H@@QAE@HH@Z) c:\Users\Maja\documents\visual studio 2012\Projects\Project6\Project6\Img.obj Project

有人能告诉我如何将Linker设置为不调用默认构造函数,并调用我想要的构造函数吗?

template <class T> class Signal {
protected: int N;                               // width of array
       int M;
private:   double deltaT;                       // sampling period
       double t0;                           // initial time
           int flag;                            // indicator
public:  
       T* sig;                              // array of type T
       T** sig2D;
       Signal(void);                    // constructor
       Signal (int);                        // constructor
       Signal (int,int);
       Signal (int,double);                 // constructor      
       Signal(int,int,double);
       Signal (int,double,double);          // constructor
       Signal(int,int,double,double);
};

template <class T> class Img:public Signal<T>
{
public:
    Img(void);
    ~Img(void);
    Img(int,int);
};

template <class T> Img<T>::Img(int a,int b){
    Signal(a,b);  // or Signal<T>::Signal(a,b);
}
int main() {
    Img<int> *a=new Img<int>(2,3);
}

您需要初始化初始化程序列表中的基类:

template <class T> Img<T>::Img(int a,int b) :
    Signal<T>(a,b)  // here
{
    // not here
}

您的版本尝试默认构造基本对象,因为初始化程序列表中没有提到它,然后创建并销毁一个临时本地对象。