1

私はC++を初めて使用するので、質問のありふれた性質について事前に謝罪します。

次のインライン関数をヘッダーファイルからソースファイルに移動するように求められました。ただし、ソースファイルで構文を正しく取得するのに苦労しています。これは、ヘッダーファイルのインライン関数です。

class G1FRViewOption
 {
    public:
        enum ViewType {partyView, contraView, unknown} ;
        G1FRViewOption() : m_view     (nullString )
                     , m_viewType (unknown    )
                     , m_isValid  (false      ) {initialise();} 
        G1FRViewOption(const RWCString view) : m_view     (view    )
                                         , m_viewType (unknown )
                                         , m_isValid  (false   ) {initialise();}
        void initialise()
        {
            static RWCString views[] = {"party","contra"} ;
            for (int vt=counterpartyView; vt<unknown; vt++)
                if (m_view.compareTo(views[vt], RWCString::ignoreCase)==0)
                {
                    m_viewType  = (ViewType) vt ;
                    m_isValid   = true          ;
                    break ;
                }
        } 
        RWCString getErrorMessage()
        {
            return "Invalid " + getFieldLabel() + " given. Valid values are party, contra.";
        }
        G1FRViewOption & operator = (const G1FRViewOption & other)
        {
            this->m_view     = other.m_view     ;
            this->m_viewType = other.m_viewType ;
            this->m_isValid  = other.m_isValid  ;
            return *this ;
        } 
              RWBoolean   is        (ViewType viewType) const {return viewType == m_viewType ;} 
              RWBoolean   isValid   () const {return m_isValid ;} 
        const RWCString & toString  ()       {return m_view    ;} 
        static const RWCString       & getFieldLabel         () { static RWCString value = "View"         ; return value ; } 
        static const FieldDefinition & getFieldDefinition    () { static const FieldDefinition fd (getFieldLabel(), 13) ; return fd ; } 
    private:
        RWCString m_view     ;
        ViewType  m_viewType ;
        RWBoolean m_isValid  ;} ;

どんな援助でも大歓迎です。

よろしくお願いします。

C ++初心者!

4

1 に答える 1

5

最初に対応する cpp ファイルが存在しない場合は作成し、次に関数の本体をそのファイルに 1 つずつコピーして、それらの名前にクラスの名前をプレフィックスとして付け、関数をヘッダーから cpp ファイルに移動します。次のような2 つのコロン:::

void initialise()
{
    static RWCString views[] = {"party","contra"} ;
    for (int vt=counterpartyView; vt<unknown; vt++)
        if (m_view.compareTo(views[vt], RWCString::ignoreCase)==0)
        {
            m_viewType  = (ViewType) vt ;
            m_isValid   = true          ;
            break ;
        }
}

ヘッダーから

void initialise();

ヘッダーで、および

void G1FRViewOption::initialise()
{
    static RWCString views[] = {"party","contra"} ;
    for (int vt=counterpartyView; vt<unknown; vt++)
        if (m_view.compareTo(views[vt], RWCString::ignoreCase)==0)
        {
            m_viewType  = (ViewType) vt ;
            m_isValid   = true          ;
            break ;
        }
}

cpp ファイルで。

于 2012-09-18T16:31:34.123 に答える