tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
22
ZUGRIFFE
1092
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    HdZ HdZ ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    10
    Hi Leute,

    Ich habe folgendes Problem:
    Wenn ich einem Objekt einer Klasse als Namen den Wert einer Variable geben möchte, bekomme ich einen Compilerfehler. (Normal wahrscheinlich) Wie kann ich das bewerkstelligen, dass das funktioniert?
    Genauso wie die übergabe von Variablen als Parameter.
    Beispiel:

    Code :
    1
    2
    3
    4
    5
    
    int id=1;
    char beisp[] = "aaa";
    char dada[];
    cin >> dada;
    beispklasse [COLOR=Red]dada[/COLOR]([COLOR=Red]id[/COLOR], [COLOR=Red]dada[/COLOR]);

    Ich hoffe ihr könnt mir helfen,
    danke schonmal im voraus,
    Daniel
     

  2. #2
    Avatar von Mr.Undertaker
    Mr.Undertaker Mr.Undertaker ist offline Mitglied Gold
    Registriert seit
    Dec 2001
    Ort
    Radolfzell am Bodensee
    Beiträge
    181
    *verwirrt* komm jetzt nicht ganz mit. Objekt einer Klasse ?

    der constructor deiner beispklasse sollte zumindest mal so in
    etwa aussehen, oder versteh ich das problem nicht?

    Code :
    1
    2
    3
    4
    5
    
    beispklasse:beispklasse(int id, char* dada)
    {
      myId = id;
      myDada = dada;
    };
     
    Signatur hat Urlaub.

  3. #3
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Wie Mr. Undertaker bereits geschrieben hat. Den Compilerfehler kriegst du weg, in dem du das Objekt NICHT gleich wie einen Variablennamen (dada) nennst.

    Zum Bleistift:

    beispklasse hurz(id, dada);
     

  4. #4
    wasted time wasted time ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    302
    Du kannst einem Objekt nicht den Wert einer Variablen als Namen geben, so dass du es dann im Quellcode damit ansprechen kannst. Das geht nicht.
     

  5. #5
    Beichtpfarrer Beichtpfarrer ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Wannweil
    Beiträge
    302
    Hast du mal daran gedacht, dass Objekte auch nur Variablen sind?
     
    Noch weiter helfen jetzt nur noch google, msdn, Tutorials, Forumssuche, Eingebungen, Glück und ein wenig Hirnanstrengung.

  6. #6
    HdZ HdZ ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    10
    @mr.undertaker
    sorry weiß nicht wie man dass nennt, aber ihr habt das problem erkannt.
    muss ich dada als zeiger an den kunstruktor übergeben?
    @all
    das problem ist, dass ich datenbank erstellen will, die die namen (bzw. die id) der Objekte automatisch verteilt.
    Also kurzform:

    [CODE]
    int id=0;
    neu:
    id = id+1;
    beispielklasse id (...);
    goto neu;
     

  7. #7
    Beichtpfarrer Beichtpfarrer ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Wannweil
    Beiträge
    302
    int id; ist eine Variable und wie eben von mir erwähnt, ist
    beispielklasse id; auch eine Variable und beide haben denselben Namen.

    Nur leider darfst du in einem Namensbereich keine 2 Variablen mit gleichem Namen haben!

    Weißt du auch, welchen Sinn das hat?
    -> sonst weiß man bei Verwendung einer dieser Variablen nicht, welche gemeint ist (einleuchtend oder?)

    PS: Falls du irgendwie meinst, du musst diese Variablen gleich nennen, um Daten zu übertragen oder sowas - der Name einer Variablen hat keinerlei Einfluss auf ihren Inhalt, ihr Name ist ausschlieslich dafür gedacht, dass der Compiler (und auch du) sie von den anderen unterscheiden kann.
    Geändert von Beichtpfarrer (29.10.04 um 17:15 Uhr)
     
    Noch weiter helfen jetzt nur noch google, msdn, Tutorials, Forumssuche, Eingebungen, Glück und ein wenig Hirnanstrengung.

  8. #8
    HdZ HdZ ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    10
    okay, das ist schon einleuchtend, aber es muss doch möglich sein einem objekt einen namen während die anwendung läuft zu geben. also über cin und dann ein neues objekt mit dem namen den man gerade eingegeben hat.
    ich will die nicht gleich nennen, aber ich kann mir nicht ausmalen wie es sonst geht...
     

  9. #9
    Avatar von Mr.Undertaker
    Mr.Undertaker Mr.Undertaker ist offline Mitglied Gold
    Registriert seit
    Dec 2001
    Ort
    Radolfzell am Bodensee
    Beiträge
    181
    Ach, das ist die Frage, also:

    Nein man kein während der Laufzeit den Variablen/Klassennamen nicht ändern !

    Denn es gibt absoluten keinen Grund für so einen Schwachsinn!

    Oder ich (bzw wir) verstehen dich falsch !
     
    Signatur hat Urlaub.

  10. #10
    HdZ HdZ ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    10
    okay, nochmal, dann lass ich euch in ruhe.

    ich möchte zum beispiel eine datenbank zum verwalten von cds erstellen. nun gebe ich für jede cd ein paar daten ein (an den konstruktor der klasse disk). jetzt möchte ich dass für jede cd die ich erstelle automatisch eine nummer zugeordnet wird, als variable in der klasse. also die erste cd erhält id = 1, die zweite id=2 usw.
    man könnte es mit dem autowert bei ms access vergleichen.
    Danke euch, und hoffe dass ich eure nerven nicht zu arg beansprucht habe.
     

  11. #11
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    Bitte die Netiquette (speziell Gross-/Kleinschreibung) beachten
     

  12. #12
    Avatar von Mr.Undertaker
    Mr.Undertaker Mr.Undertaker ist offline Mitglied Gold
    Registriert seit
    Dec 2001
    Ort
    Radolfzell am Bodensee
    Beiträge
    181
    Na also, sags doch!

    Eine Möglichkeit ist es, dies mit einem "static attribut" zu lösen.

    deine Klasse:
    Code :
    1
    2
    3
    4
    5
    6
    
    class CArchiv
    {
    public:
        CArchiv(){ m_iCDID++; };  //hier wird die nummer inkrementiert     
        static int m_iCDID;          //statisches Attribut
    }

    main.cpp:
    Code :
    1
    2
    3
    4
    5
    6
    
    int CArchiv::m_iCDID = 0;   //WICHTIG: Attribut muss initialisiert werden
     
    int main()
    {
     ...
    }

    Hoffe geholfen zu haben.
    Gruß
     
    Signatur hat Urlaub.

  13. #13
    HdZ HdZ ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    10
    Ahhhhh....

    Ihr könnt mich für blöd halten oder was auch immer ihr wollt. Ich bekomm das nicht zum laufen! Ich hab meine .cpp mal in den Anhang, hoffe ihr werdet daraus schlau.

    Danke,
    Daniel

    PS: Das mit "static attribut" scheint wohl zu funktionieren wenn der Rest funktioniet...
    Angehängte Dateien Angehängte Dateien
     

  14. #14
    C Coder C Coder ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    172
    Du übergibst hier ein char-Array, aber von Konstruktor wird ein einzelnes char erwartet!
    Da char-Array char-Pointer entspricht, würd ich das, wenn du bei char als Datentyp bleiben willst, so lösen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    [COLOR=blue]class[/COLOR] disk{
         [COLOR=blue]public:[/COLOR]
              disk([COLOR=blue]char[/COLOR]* be);
              ~disk();
              [COLOR=blue]char[/COLOR]* get_its_id() [COLOR=blue]const[/COLOR];
              [COLOR=blue]char[/COLOR]* get_its_beschr() [COLOR=blue]const[/COLOR];
              [COLOR=blue]void[/COLOR] set_its_beschr([COLOR=blue]char[/COLOR]* bes);
              [COLOR=blue]static[/COLOR] UNSHO its_id;
         [COLOR=blue]private:[/COLOR]
              [COLOR=Green]// its_id;[/COLOR]
              [COLOR=blue]char[/COLOR]* its_beschr;
    };
    Geändert von C Coder (30.10.04 um 13:10 Uhr)
     

  15. #15
    C Coder C Coder ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    172
    Hier einmal die vollständige Lösung im Anhang.

    Anstatt von char könntest du auch std::string nutzen.
    Dann würde der ganze Kram in Sachen speicherreservierung wegfallen. Außerdem hättest
    du noch ein paar nützliche Funktionen gratis dazu!
    Angehängte Dateien Angehängte Dateien
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 25.08.09, 08:58
  2. Eingabe Überprüfung von Klassen-Objekten
    Von dzyan im Forum Java Grundlagen
    Antworten: 24
    Letzter Beitrag: 07.11.08, 16:23
  3. Kommunikation zwischen Klassen/Objekten
    Von floggie im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 6
    Letzter Beitrag: 24.03.06, 14:32
  4. Hangman mit Klassen und Objekten
    Von sk4r im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 19.04.05, 18:29
  5. Array von Klassen-Objekten
    Von mage im Forum PHP
    Antworten: 4
    Letzter Beitrag: 29.05.02, 17:33