Ignore:
Timestamp:
Aug 21, 2008, 11:04:52 PM (16 years ago)
Author:
dai
Message:

[728]を64bit版にマージ。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/compiler_x64/Compile_Object.cpp

    r704 r729  
    101101    int typeSize = pClass->GetSize();
    102102
    103     if( pClass->IsAbstract() ){
     103    if(pClass->IsAbstract())
     104    {
     105        std::string tempMessage;
     106        BOOST_FOREACH( const CMethod *pMethod, pClass->GetDynamicMethods() ){
     107            if(pMethod->IsVirtual()){
     108                if(pMethod->IsAbstract()){
     109                    if( !tempMessage.empty() )
     110                    {
     111                        tempMessage += ", ";
     112                    }
     113                    tempMessage += pMethod->GetUserProc().GetName();
     114                }
     115            }
     116        }
     117
     118        // インターフェイスのvtbl
     119        BOOST_FOREACH( const ::Interface *pInterface, pClass->GetInterfaces() )
     120        {
     121            BOOST_FOREACH( const CMethod *pMethod, pInterface->GetDynamicMethods() ){
     122                if(pMethod->IsVirtual()){
     123                    if(pMethod->IsAbstract()){
     124                        if( !tempMessage.empty() )
     125                        {
     126                            tempMessage += ", ";
     127                        }
     128                        tempMessage += pMethod->GetUserProc().GetName();
     129                    }
     130                }
     131            }
     132        }
     133
    104134        //抽象クラスだったとき
    105         compiler.errorMessenger.Output(125,pClass->GetName().c_str(),cp);
     135        compiler.errorMessenger.Output(-1,"\"%s\" は抽象クラスです。インスタンス化することはできません(抽象メソッド … " + tempMessage + ")。",cp);
    106136    }
    107137
Note: See TracChangeset for help on using the changeset viewer.