0

Marmalade SDK を使用したシリアル化に問題があります。プリミティブのシリアル化などの原則は理解していますが、ポリモーフィック オブジェクトについてはどうでしょうか。

マーマレードの例によると、次のようにオブジェクトをシリアル化します。

void Serialise()
{
    uint8 isObject;

    if (IwSerialiseIsWriting())
    // writing
    {
        // record whether m_Happy exists
        isObject = m_Happy ? 1 : 0;
        IwSerialiseUInt8(isObject);

        // serialise out m_Happy if it exists
        if (m_Happy)
            m_Happy->Serialise();
    }
    else
    // reading
    {
        IwSerialiseUInt8(isObject);

        // if an object was written out then read it in
        if (isObject)
        {
            // if m_Happy already exists then delete it
            if (m_Happy)
                delete m_Happy;

            m_Happy = new CHappy;

            // serialise in m_Happy
            m_Happy->Serialise();
        }
    }
}

私の質問は、多相型がある場合にこのメソッドをどのように使用できるかということです。例えば:

私はオブジェクトを持っています:

AbstractClass *object;

シリアル化するとき、どうすればこのオブジェクトを正しく開始できますか? 簡単なマーマレードの例によると、次のようになります。

// reading
if(objectExists) {
    object = new AbstractClass(); // uh oh
}
4

1 に答える 1