Value Class - Member initialisieren?



  • Errare humanum est xD
    Hatte schon die Vermutung, dass meine Vermutung falsch sein könnte.. Nun denn, dann halte ich mich mal raus, da ich offensichtlich keine Ahnung habe..



  • Ich habe jetzt eine (ziemlich unschöne, aber wirksame) Funktion eingebaut, die Addition zurückgibt und dabei allerdings die Werte 0 und 80 vertauscht...

    Aber Danke für die Aufklärung, dass/warum Konstruktoren nicht gehen!



  • Konstruktoren gehen schon, bloss keine parameterlosen.



  • Oh, das ist gut zu wissen.
    EDIT: Allerdings wird trotzdem ein Default-Konstruktor generiert, oder?



  • probiers doch einfach aus 😉



  • Habs grad getestet: Es wird ein Default-Ctor erstellt.



  • ja genau bei msdna heißt es zu der fehlermeldung auch:

    Value types cannot contain functions such as a default instance constructor, destructor, or copy constructor.

    statt public value struct kannst du auch value struct schreiben denn struct heißt nichts anderes als das die klasse public ist



  • Was macht man denn, wenn in der value struct ein ref struct als Member deklariert ist (keine Ahnung, ob das Sinn macht)?

    Dann hätte man keine Möglichkeit, die Member im Default-Konstruktor zu initialisieren und es steht nullptr darin.



  • Black_Sheep schrieb:

    ja genau bei msdna heißt es zu der fehlermeldung auch:

    Value types cannot contain functions such as a default instance constructor, destructor, or copy constructor.

    statt public value struct kannst du auch value struct schreiben denn struct heißt nichts anderes als das die klasse public ist

    Du bringst was durcheinander.

    Bei public value struct {} bezieht sich das public nicht auf die Sichtbarkeit der Member, sondern auf die Sichtbarkeit der Types ausserhalb des Assemblies. Die Default Sichtbarkeit (ohne public) wäre hierbei private!

    Tja, C++/CLI ist einfach nicht ISO / ANSI C++...

    Was macht man denn, wenn in der value struct ein ref struct als Member deklariert ist (keine Ahnung, ob das Sinn macht)?

    Dann hätte man keine Möglichkeit, die Member im Default-Konstruktor zu initialisieren und es steht nullptr darin.

    ref struct ist ein Reference Type und kann dann nur mit ^ als Member des value struct sein. Diese Referenz wird mit nullptr initialisiert.

    Simon

    http://msdn.microsoft.com/en-us/library/ms379617(VS.80).aspx



  • taraneas schrieb:

    Dann hätte man keine Möglichkeit, die Member im Default-Konstruktor zu initialisieren und es steht nullptr darin.

    Ja, dann steht da null drinnen.
    Das ist eine Limitierung des ganzen .NET Gedöns, mit der du leben musst. Kommt auch nicht von C++/CLI, sondern wie gesagt von .NET. Ist also in C#/VB/... genauso.


Anmelden zum Antworten