Алхимия не может получить размер списка

    //--------------------------------------------test.cpp

// g++ test.cpp -O3 -Wall -swc -o test.swc


#include <iostream>
#include <list>
#include <vector>
#include "AS3.h"
using namespace std;

//vector<float> vf;
list<float> vf;

static AS3_Val getSize(void* self, AS3_Val args)
{
    int num = vf.size();
    return AS3_Int(num);
}

int main()
{
    AS3_Val getSizeMethod = AS3_Function( NULL, getSize);

    AS3_Val result = AS3_Object( "getSize:AS3ValType", getSizeMethod); 

    AS3_Release( getSizeMethod );

    AS3_LibInit( result );

    return 0;
}




    //-------------------------------------------------test.as

// C:\alchemy\flex4\bin\mxmlc -library-path+=./test.swc -static-link-runtime-shared-libraries=true test.as 


package{
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldType;

    import cmodule.test.CLibInit

    public class test extends Sprite{
        public function test() {
            var info:TextField = new TextField();
            this.addChild(info);


            var loader:CLibInit = new CLibInit();
            var lib:Object = loader.init();
            info.appendText("size:" + lib.getSize() + "\n");
        }
    }
}

-------------------------------------вопрос------------ ------

1.test.swf не запускается, но если я использую вектор, то все в порядке!
2.Если я верну некоторые элементы в список, он запустится, но размер, который я получаю, неверен!

Может кто-нибудь помочь мне! Благодарность!!!


person lightboat    schedule 26.03.2012    source источник


Ответы (1)


Статические инициализаторы не работают в Alchemy. Чтобы обойти это, вам нужно создать свой список в main(). Например,

list<float> vf;

становится

list<float> *vf;

и в вашем основном вам нужно его создать:

vf= new list<float>();

и ваш метод getSize вернет

int num = vf->size();
person paleozogt    schedule 26.03.2012
comment
@lightboat, так как мой ответ сработал для вас, не могли бы вы его принять? - person paleozogt; 27.03.2012