2013-03-26 53 views
-4
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; 
    }; 
}; 

衍生类的功能,我试试这个:

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

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

我不知道是什么导致链接器错误。谁能帮忙?

+0

什么是链接器错误? – Alon 2013-03-26 07:46:10

+0

@Alon:符号被多重定义。基类的许多函数/变量都存在于基类和派生类的对象文件中。 – mdv 2013-03-26 07:47:44

+0

你想念;在课程结束的时候我会在代码中加入 – Alon 2013-03-26 07:49:58

回答

0

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