Standardargumente bei verwalteter Klasse



  • Hallo,

    bin beim Testen über folgenden Fehler gestolpert :

    Fehler 1 error C3222: "t": Für Memberfunktionen eines verwalteten Typs oder generische Funktionen können keine Standardargumente deklariert werden. e:\Eigene Dateien\Visual Studio 2005\Projects\CLR\Visual C++ Buch\Kapitel 18 - Vererbung II\Vererbung II\Vererbung II.cpp 29

    Hmm, der geht ganz einfach zu basteln, indem man in einer verwalteten Klasse versucht eine Methode zu erstellen die Standardargumente hat:

    ref class test
    {
      int test(int t=3)
      {
        return(0);
      }
    };
    

    is mal ne kurzform...da würde der fehler aber auch kommen.

    Wie erstellt man denn dann so eine funktion der man entweder eine Variable übergibt oder wenn nicht ein standard argument genommen wird ?

    Matthias



  • Garnicht denn

    Für Memberfunktionen eines verwalteten Typs oder generische Funktionen können keine Standardargumente deklariert werden
    


  • Hilf Dir mit Überladung:

    int test() { test(3); }
    int test(int i) { ... }
    


  • Hallo,

    überladung .. ok, aber das ist nicht ganz das was ich meine.
    Ich beschreibe es nochmal :

    int test(bool runden=false)
    {
     if(runden)
       return(round(irgendwas));
      else
       return(ungerundetes irgendwas);
    }
    
    // Aufrufen
    
    int test(true); // würde ein gerundetes ergebnis ausgeben, klar
    int test(); // und das ist es : Kein Argument, also wird false angenommen und
                // ein ungerundetes Ergebnis ausgegeben.
    

    Das meinte ich.
    Dürfte jetzt klarer für euch sein.
    Ich glaube das geht mir ner Überladung nicht .

    Matthias



  • STF-DIR schrieb:

    überladung .. ok, aber das ist nicht ganz das was ich meine.

    Doch, das ist es.

    Ich beschreibe es nochmal :

    *seufz*

    dürfte jetzt klarer für euch sein.

    🙄

    Ich glaube das geht mir ner Überladung nicht .

    Wir sind aber nicht in der Kirche.

    Warum probierst du's nicht einfach aus?



  • Hallo,

    ich muß mich entschuldigen !!!

    Das funktioniert tatsächlich. Muß zwar andersherum stehen , aber geht.

    Normalerweise, wenn man eine funktion oder methode überladen hat, dann kommt doch sobald man die klammer hinter test( gemahct hat das kleine gelbe fensterchen Intelli sense.
    das kommt nur blöderweise bei der variante nicht.

    Aber es geht !!
    Danke Euch ... und sorry nochmals !
    Matthias



  • STF-DIR schrieb:

    Das funktioniert tatsächlich. Muß zwar andersherum stehen , aber geht.

    Da muss nichts andersherum stehen.

    Normalerweise, wenn man eine funktion oder methode überladen hat, dann kommt doch sobald man die klammer hinter test( gemahct hat das kleine gelbe fensterchen Intelli sense.
    das kommt nur blöderweise bei der variante nicht.

    Ein Tipp für die Zukunft: Intellisense ist eine Hilfestellung, keine Referenz. Mir ist auch kein Fall bekannt, bei dem ein bestimmtes Verhalten des Intellisense gewünscht gewesen wäre. Wenn du solche Anforderungen hast, solltest du das vorher deutlich sagen.



  • Ok,

    das nächste mal beschreibe ich
    mein Problem eben noch genauer.

    Matthias



  • Und lies die Grundlagen durch, aktzeptiere manche aussagen darin und mach weiter.

    Um a zu erklären benötigst Du b, das aber das wissen von a braucht. Du musst an irgendeinem Punkt einfach aussagen hinnehmen, die Erklärungen kommen dann von alleine.

    Zudem: Hier sitzen viele Leute die Programmieren. Wenn man als Antwort unsinn schreibt, wird man sehr schnell korregiert. Wenn Du den Antworten aber generell nicht glaubst, ist ein Forum der falsche Platz.



  • Hallo,

    ich bin doch grad dabei ein Grundlagenbuch zu lesen.
    Ausserdem Akzeptiere ich doch eure antworten. Hab Dir doch schonmal gesagt das nicht jeder so ne Leuchte ist wie du.
    Ich brauch halt manchmal ein bischen länger um wa szu kapieren, denn wenn ich es schon lerne dann will ich es auch RICHTIG kapieren und nicht nur teilweise !

    Matthias


Anmelden zum Antworten