CArray Cast



  • Hi,
    ich habe eine Funktion der ein void Zeiger übergeben wird, dieser Zeiger soll dann später auf verschiedene CArrays zeigen wie caste ich den void Zeiger um?

    Habe es so probiert:

    CArray<DBWORKADOKUNDEN,DBWORKADOKUNDEN> *table_temp;
    			table_temp = new(CArray<DBWORKADOKUNDEN,DBWORKADOKUNDEN>);
    
    			table = (CArray<DBWORKADOKUNDEN,DBWORKADOKUNDEN>*) table;
    			table = table_temp;
    

    table ist dabei der void Zeiger:

    int test_execute(int type, void * table)
    

    aber ich kann danach den Zeiger nicht als CArray verwenden (also z.B. kein Add verwenden)



  • table ist vom Typ void*, und mti void kann man nix machen, außer einer Adresse speichern.
    Du musst dir nen Zeiger vom Typ CArray anlegen und darin die gecastete Adresse speichern.
    Aber dein Code sieht eh ziemlich merkwürdig aus. Was willst du denn genau damit machen?



  • Mach ich das nicht schon?

    ich erstelle einen CArray zeiger:

    CArray<DBWORKADOKUNDEN,DBWORKADOKUNDEN> *table_temp;
    

    danach Caste ich den void Zeiger:

    table = (CArray<DBWORKADOKUNDEN,DBWORKADOKUNDEN>*) table;
    

    und dann weiße ich table den CArray zeiger zu:

    table = table_temp;
    

    Ziel ist es über eine Funktion verschiedene Tabellen zurückgeben zu können.



  • int test_execute(int type, void * table)

    Nur das zählt, table hat also den Typ void*.

    table = (CArray<DBWORKADOKUNDEN,DBWORKADOKUNDEN>*) table;
    

    hier castest du table auf CArray*, und dann wird implizit wieder auf void* gecastet.
    Du brauchst nen Zeiger vom Typ CArray*, wo du die Adresse ablegst.


Anmelden zum Antworten