tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
0
ZUGRIFFE
305
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von the snake II
    the snake II the snake II ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Krefeld
    Beiträge
    132
    Hallo zusammen,

    weil ich in meinem Programm mit mehreren verschiedenen String-Typen arbeite, schreibe ich eine Art Universal-Helferklasse "DString", die selbstständig verschiedene Typkonvertierungen durchführt.

    Die Klasse enthält einen Member "mValue" vom Typ "char*".

    Ich möchte im Programm nun etwas in eine Datei hineinschreiben. Dafür benötige ich einen String vom Typ char*.
    Nichts einfacher als das, denn in der DString-Klasse wird der ja als char* gespeichert.

    Ich habe zwei Möglichkeiten ausprobiert, die nach meinem Verständnis eigentlich das gleiche tun sollten:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    public class DString {
     
        private: char* mValue;
     
        public:
        DString(char* pValue){
            mValue = pValue;
        }
     
        operator char*(){
            return mValue;
        }
     
        char* toCharPtr(){
            return mValue;
        }
    };
     
    DString* dstr = new DString("abcdefg");
     
    char* char1 = (char*)dstr;       // "·ýýýýZOg0ÝÝ"
    char* char2 = dstr->toCharPtr(); // "abcdefg"

    Mit dem Konvertierungsoperato bekomme ich nicht den String sondern etwas, was für mich wie eine Speicheradresse aussieht, da es unabhängig von der Länge des Textes immer etwa gleich lang ist.

    Die Zweite Version funktioniert.

    Ich halte die erste Variante aber für effizienter. Nur, was mache ich falsch? Wie verwendet man den "operator"-Operator hier richtig?


    Schönen Gruß,

    André


    Edit: Oh mann, eine Sekunde nachdem ich das hier postet hab, hab ich den Fehler gefunden:

    Code :
    1
    
    char* char1 = (char*)*dstr;       // Das * vor dstr
    Geändert von the snake II (13.11.11 um 14:32 Uhr)
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 25.08.10, 19:13
  2. Antworten: 2
    Letzter Beitrag: 05.04.10, 23:31
  3. Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
    Von MTMonline im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 2
    Letzter Beitrag: 25.04.08, 09:49
  4. Finder methods + JBoss + Was expecting one of: "CONCAT" "SUBSTRING" ... "(" ... <STRI
    Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 6
    Letzter Beitrag: 27.05.05, 15:29
  5. Antworten: 2
    Letzter Beitrag: 19.05.05, 19:51