c++ - 错误 LNK2019 : unresolved external symbol "public: __thiscall Signal

标签 c++ class templates inheritance linker

当我调用 main() 函数时出现错误:

错误 2 error LNK2019: 函数“public: __thiscall Img::Img( int,int)"(??0?$Img@H@@QAE@HH@Z) c:\Users\Maja\documents\visual studio 2012\Projects\Project6\Project6\Img.obj 项目

谁能告诉我如何将链接器设置为不调用默认构造函数并调用我想要的构造函数?

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
}

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

关于c++ - 错误 LNK2019 : unresolved external symbol "public: __thiscall Signal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616688/

相关文章:

c++ - C++中2点之间的最小距离

c++ - 如何重构具有相同行的函数,唯一不同的是一个函数调用?

c++ - 无法链接到 vtk 6.3/usr/bin/ld : cannot find -lvtkCommon

c++ - 当我在某些情况下使用模板参数时,编译器如何生成函数实例?

java - 任何支持条件格式的 Java 轻量级模板解决方案?

templates - Pug/Jade 获取给定模板中的所有变量

c++ - Qt通过代码关闭一个正在运行的窗口

JQuery:如果元素有文本,则将类添加到元素

Java字段猜测

c++ - C++ 中的析构函数和类 [内存泄漏]