-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;
    };
};

クラスDerivedの関数から、これを試します:

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

複数定義されたシンボルのリンカ エラーが発生します。シンボルは基本クラスと派生クラスの両方で定義されています。

リンカーエラーの原因がわかりません。誰でも助けることができますか?

4

1 に答える 1

0

私がコメントしたように..読みにくい..しかし、それの外観から、主な問題は、使用しようとしているm_vProcessAnimParams関数がBaseでプライベートであるため、Derviedがそれにアクセスできないことです..

于 2013-03-26T08:05:19.260 に答える