Ignore:
Timestamp:
Mar 3, 2008, 6:33:29 PM (17 years ago)
Author:
dai_9181
Message:

クラス継承を行う際、dynamicMembersの中身をコピーする方式をやめ、基底クラスのものを参照するように修正した。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/include/Class.h

    r387 r409  
    221221        , isCompilingDestructor( false )
    222222        , pobj_NextClass( NULL )
     223        , cacheSize( 0 )
    223224    {
    224225    }
     
    239240        , isCompilingDestructor( false )
    240241        , pobj_NextClass( NULL )
     242        , cacheSize( 0 )
    241243    {
    242244    }
     
    423425
    424426    //重複チェック
    425     bool DupliCheckAll(const char *name);
    426     bool DupliCheckMember(const char *name);
     427    bool DupliCheckAll(const char *name) const;
     428    bool DupliCheckMember(const char *name) const;
    427429
    428430    const Members &GetDynamicMembers() const
     
    443445    }
    444446   
    445     const CMember *FindDynamicMember( const char *memberName ) const
    446     {
    447         BOOST_FOREACH( CMember *pMember, GetDynamicMembers() )
    448         {
    449             if( pMember->GetName() == memberName )
    450             {
    451                 return pMember;
    452             }
    453         }
    454         return NULL;
     447    const CMember *FindDynamicMember( const char *memberName ) const;
     448    bool HasDynamicMember( const char *memberName ) const
     449    {
     450        return ( FindDynamicMember( memberName ) != NULL );
    455451    }
    456452
     
    503499
    504500    // メンバの総合サイズを取得
     501private:
     502    int cacheSize;
     503public:
    505504    int GetSize() const;
    506505
    507506    // メンバのオフセットを取得
    508     int GetMemberOffset( const char *memberName, int *pMemberNum = NULL ) const;
     507    int GetMemberOffset( const char *memberName ) const;
    509508private:
    510509    // アラインメント値を取得
     
    531530    bool IsExistVirtualFunctions() const
    532531    {
    533         return ( vtblNum > 0 );
     532        // 構造体以外は仮想関数を持つ
     533        return !IsStructure();
    534534    }
    535535   
Note: See TracChangeset for help on using the changeset viewer.