call by reference



  • Hallo,

    ich übergebe der funktion folgendes:

    mql-code

    string array[2] = {"Hallo" , "Welt"}
    DLL_Test(string& array[]);
    
    DLL_Test(array);
    
    MT4_EXPFUNC void __stdcall DLL_Test(char * p)
    {
    	*p[0] = "i";
    }
    

    Ich bekomme beim compilen leider folgenden fehler:

    error C2440: '=': 'const char [2]' kann nicht in 'char' konvertiert werden
    1>        Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    

    Woran liegt das? Bitte um dringende Hilfe!!

    Danke vielmals


  • Mod

    man kann einem char* nicht einen string zuweisen.
    Du kannst höchstens kopieren, aber das ist sehr unsicher, wenn Du nicht zu Buffergröße mit angibst:

    M

    T4_EXPFUNC void __stdcall DLL_Test(char * p)
    {
        strcpy(p,"i");
    }
    

    Weiterhin ist die Übergabe einen std::string über eine DLL Schnittstelle nur sicher wenn Du die CRT als DLL verwendest und für DLL wie auch EXE garantiert den gleichen Compiler verwendest!


Anmelden zum Antworten