调用基类的模板函数

时间:2013-03-26 07:43:00

标签: c++ templates linker

class Base
{
  protected:
    template<typename TFunc>
    void m_vProcess(TFunc& func) const
    {
         BasePrivateClass<TFunc> baseprivateobj(func);
         // rest of code              
    }

   private:   
       template<typename TFunc>
       class BasePrivateClass
       {
       public:
           BasePrivateClass(TFunc& obj) :m_obj(oParam)
           {}                            
        private:  
           TFunc& m_obj;
   };
};

这是我的派生类:

class Derived: public Base
{
private:
   class DerivedPrivateClass
    {
    public:
        explicit DerivedPrivateClass(int **p): m_objDerived(poParam)
        {}
    private:
         int** m_objDerived;
    };
};

从Derived类中的函数,我试试这个:

DerivedPrivateClass obj(param);
this->m_vProcess(obj);

我得到了多重定义符号的链接器错误 - 符号在基类和派生类中定义。

我不知道导致链接器错误的原因。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

正如我评论的那样......有点难以阅读..但从它的外观来看,一个主要的问题是你试图使用的m_vProcessAnimParams函数在Base中是私有的,所以Dervied无法访问它..