ref struct übergeben klappt nicht



  • Hi,

    ich habe folgende Struktur:

    ref struct Datensatz{
    	Int32 Zahl;
    	Single Zahl2;
    	String^ Name;
    };
    

    diese ist ein Element meiner verketteten Liste:

    ref struct Listel{
    	DBStackel^ nx;
    	DBStackel^ pr;
    	Datensatz Del;
    };
    

    Nun habe ich eine Funktion, welche die verkette Liste erweitern soll und die Daten der übergebenen ref struct Datensatz. Hier hakt es noch nicht.
    trotzdem Code dieser Funktion:

    ref struct DBStackel^ DB_Kette::Push(Datensatz Datel){
    
    	Liste^ ende;
    	liste^ dv;
    
    	if (anfang == nullptr) {
    //anfang ist in der Header definiert
            anfang = gcnew Stackel;
            ende = anfang;
    		ende->bv = nullptr;
        }
        else {
            ende = anfang;
            while (ende->nx != nullptr) {
                ende = ende->nx;
            }
            dv = ende;
    		ende->nx = gcnew Listel;
    		ende = ende->nx;
    		ende->bv = dv;
        }
        ende->nx = nullptr;
    
    	ende->Del.Zahl = Datel.Zahl; 
    	ende->Del.Zahl2 = Datel.Zahl2;
    	ende->Del.Name = Datel.Name;
    
    	return anfang;
    }
    

    Übergebe ich der Funktion Push ein Element wie folgt:

    ref struct Listel^ VK::Zuweisung(){
    
    	Datensatz Del;
    	Listel^ anf;
    
    	Del.Zahl = 5;
    	Del.Zahl1 = 5,5;
    	Del.Name = "Name"; 
    
    	anf = Push(Del);
    
    	return anf;
    }
    

    Dann erhalte ich für diese Zeile, in der die Push aufgerufen wird folgende Fehlermeldung:

    Fehler	1	error C2664: 'VK::Push': Konvertierung des Parameters 1 von 'Datensatz' in 'Datensatz' nicht möglich	d:\Progs\VK_cli\VK_cli\VK.cpp	94
    

    kann mir da nicht richtig helfen, da meine beiden Bücher leider nichts in Sachen Struct bei c++/cli hergeben 😞
    Hoffe mir kann jemand helfen 😉

    Gruß
    ich988



  • Du kommst nicht zufällig von C# her? ref class und ref struct sind äquivalent zu class , value class und value struct zu struct in C#. ref struct musst du wie ref class per Handle übergeben, da du damit einen Referenztypen definierst. Also:

    ref struct DBStackel^ DB_Kette::Push(Datensatz ^Datel)
    

    MfG



  • 👍 So funktioniert es auch 🙂
    Komme von C++ dort konnte ich immer einfach ne komplette structur übergeben.

    vielen Dank 😉


Anmelden zum Antworten