如何在基类(而不是模板类)中调用c ++模板函数

时间:2016-09-16 11:53:12

标签: c++ templates reference undefined

在链接下面的调用者表示未定义的引用...

在base.h文件中:

class tempc {
    public:
    int a;
} ;
class base                 // base class
{
    public:                // public
    template<T> int func(T*);     //  template defined here
};
base.cpp文件中的

template<T>
int base :: func(T*)
{
    std::cout << "base::func called" << std::endl;
    return 0;
}

在derived.cpp文件中

class derived : public: base    // class defined
{
     void  caller()
    { 
        tempc a;
        func<tempc>(&a);    // template used here
        base::func<tempc>(&a);
    }
};
int main()
{
    derived d;
    d.caller();
}

错误是: 未定义引用`void base :: func(tempc *)'

base是基类

derived是基础

的派生类

这位来电者说未定义的参考...

//抱歉,因为我的源代码太大而无法显示

1 个答案:

答案 0 :(得分:0)

代码正常(纠正无意义语法后):

observeSingleEventOfType