tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
468
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Hallo,

    gibt es in C (C++) einen "flexiblen" Datentypen (so wie in VB: "variant"), der alle Datentypen annehmen kann?

    Also Beispiel:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    bool IsBoolValue( variant Value )
    {
        if( IsBoolean( Value ) )
        {   
            return true;
        }
     
        return false;
    }
    Gibt es so etwas?

    Und die nächste(n) Frage(n) wäre(n): Gibt es ein Methode, wie "IsBoolean" (bzw. IsString, IsNumeric,...), um herauszufinden, welcher Datentyp nun bei dieser Funktion übergeben wurde?


    mfG

    MAN
    Geändert von MAN (25.05.04 um 10:55 Uhr)
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  2. #2
    Registriert seit
    Jan 2002
    Ort
    Hamburg
    Beiträge
    2.852
    Hm, also den Datentyp Variant gibt es unter C++ auf jeden Fall auch, wie es mit Funktionen für die Datentyperkennung aussieht weiß ich nich, schau mal bei google!
     
    Wenn euch mein Beitrag gefällt, meldet euch als Referal bei Dropbox an: http://db.tt/4tKC8O5

  3. #3
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    In die Sprache eingebaut ist union . Das unterstützt allerdings keine Typerkennung. Ich empfehle boost::any aus der Boost-Library .
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  4. #4
    Registriert seit
    May 2004
    Beiträge
    287
    Oder man bastelt sich selbst einen. Hab ich mal gemacht, bis ich festgestellt habe, dass so einen Datentyp die Welt nicht braucht.
    Wozu brauchst du denn variant?
     

  5. #5
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Um eine Funktion die ich grad schreib sehr flexibel zu machen:

    man übergibt ihr entweder einen String, Bool oder Integer-Wert, was dann per WritePrivateProfileString(...) automatisch in eine INI-Datei geschrieben wird.

    Alternative wären zwei, drei Methoden zu schreiben - das wollt ich umgehen.
    Klar, man könnte vor jedem Aufruf von WritePrivateProfileString noch ein sprintf(...) oder sonstiges machen, aber das wollt ich alles in einer Methode haben.

    Vielleicht wäre es doch einfacher, diese 3 Methoden zu schreiben...

    Trotzdem, vielen vielen Dank für die Tipps! !


    mfG

    MAN
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  6. #6
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Was programmierts du? C oder C++?
    Wenn C++ warum dann nicht Funktionen überladen?

    void MyFunc(int)
    void MyFunc(const char*)
    void MyFunc(double)
    usw..

    Und dann je nachdem verarbeiten.
    Man kann sich das aber auch verkomplizieren und mit void-Zeigern rumspielen oder sich selbst einen Variant-Datentyp bauen und wild "umhercasten".

    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

  7. #7
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Stimmt! Auf die einfachste Lösung bin ich gar nicht gekommen - überladen!

    So wäre es genau richtig: immer der gleichen Methode (den Methoden) kann irgendein Datentyp übergeben werden, die Methode sucht sich jedoch selbst aus, wie sie den Wert verarbeitet - perfekt

    Manchmal denken wir einfach zu scharf nach, um auf die einfachste Lösung zu kommen!

    Vielen Dank!


    mfG

    MAN
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  8. #8
    Byteblaster Byteblaster ist offline Mitglied Bronze
    Registriert seit
    Apr 2004
    Ort
    Villingen-Schwenningen
    Beiträge
    34
    Um Programmier- und Eingabeaufwand zu sparen kann man auch überlegen das als Template zu entwerfen und mit dem C++ Schlüsselwort "typeid", den Typ zur Laufzeit ermitteln und entsprechend reagieren.

    MfG Byteblaster
     

  9. #9
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Bingo das wäre Möglichkeit 3.
    Wir sehen C++ ist so vielseitig
    Wobei das natürlich auch auf den Umfang ankommt und Nicht jeder auf Anhieb mit Templates zurecht kommt.
    Trotzdem eine flexible Möglichkeit.

    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter