Instanzvariablen von Konstruktor setzen



  • Hallo leute,

    habe eine Frage bezüglich der Instanzvariablen.

    Habe Beispielsweise den code (header file habe ich weggelassen, da ich denke, dass es richtig ist):

    //Class Account.cpp
    class Account
    {
      Account::Account (string b){
    
      bear=b;
      }
    
      Account::~Account(){
      }
    
    string Account::bearName(){
      return("BEAR");
    }
    
    //Class main.cpp
    int main(){
    
     Account acc("");
    
    }
    

    Meine Frage ist jetzt, mit welcher geeigneten Methodenaufruf der Methode bearName kann ich der internen Instanzvariable (bear) den Rückgabewert von der Methode bearName (BEAR) zuweisen und danach den einzelnen Instanzvariablen ausgeben ?

    danke,

    sabine 🙂


  • Mod

    Bitte zeige den Code den du wirklich benutzt. Das was du hier getippt hast steckt so voller Fehler, dass man nicht genau weiß, was überhaupt gemeint ist.



  • Ja genau und am besten schreib auch das was in deinem header File steht.



  • Der Originalcode lautet:

    //Class Account.cpp
    class Auto
    {
    Auto::Auto (string her){
    hersteller=her;
    }

    Auto::~Auto(){
    }

    string Auto::herstellerName(){
    return("Mercedes");
    }
    }

    //Class main.cpp
    int main(){

    Auto mer("");
    }


  • Mod

    Wenn das der Originalcode sein soll, dann steckt das immer noch so voller Fehler, dass es nicht compiliert werden kann. Jetzt weiß man daher nicht, ob sich deine Frage auf deine Fehler bezieht oder auf etwas anderes.



  • (header file habe ich weggelassen, da ich denke, dass es richtig ist)

    Ich bin da nicht so optimistisch 🙂 schick das auch mal dann kann man dir vielleicht helfen.

    Prinzipiel kannst Du der Variablen bear aber auch schon im Konstruktor einen Wert zuweisen ....

    Vielleicht verstehe ich deine Frage auch nicht.



  • Hallo nochmals,

    alle guten Dinge sind drei 🙂 :

    ==============================================
    
    //Class Account.cpp 
    
    #include "Auto.h"
    
    class Auto 
    { 
    Auto::Auto (string her){ 
    hersteller=her; 
    } 
    
    Auto::~Auto(){ 
    } 
    
    string Auto::herstellerName(){ 
    return("Mercedes"); 
    } 
    } 
    ==============================================
    //auto.h
    
    #ifndef AUTO_H_
    #define AUTO_H_
    
    #include <string.h>
    #include <strings.h>
    #inlcude <stdlib.h>
    
    #include <string>
    #include <iostream>
    
    using namespace std;
    
    class Auto{
    
     public:
       Auto (string her);
       ~Auto();
       string herstellerName();
    
     private:
       string hersteller; 
    }
    
    #endif /*AUTO_H_*/
    ==============================================
    //Class main.cpp 
    int main(){ 
    
     Auto mer("");
    
     /*Instanz mer ruft herstellerName auf.Instanz mer weist den rückgabewert der
       Methode der Instanzvariable hersteller zu.*/ 
     //Instanzvariable hersteller der Instanz mer wird ausgegeben 
    }
    

    Ich möchte den Rückgabeparameter der Methode herstellerName der Instanzvariable hersteller von der Instanz mer zuweisen. Danach möchte ich mer mit seinen Instanzvariablen an der Konsole ausgeben...

    Es geht nur darum wie ich das bewerkstellige, es kann sein das ihc noch tippfehler habe! ......Vielen dank 🙂

    Gruß,

    Sabine



  • Ok ich fang mal an:

    Account.cpp nenn die um in Auto.cpp. Die soll doch zu auto.h gehoeren oder?
    lass das class Auto{} dort weg.
    #inlcude <stdlib.h> tippfehler

    so dann versuch mal zu compilen.
    zu deiner Frage:
    Also Das auto das Du in der main erschaffst hat als hersteller den wert den du dem Konstuktor uebergibst in deinem Fall "".
    Du hast da glaube ich noch einiges mit den klassen nicht verstanden... Also du moechtest nun das deine Instanz den wert "mercedes" zurueck gibt und das dann als hersteller in mer setzen???
    Dann gib den wert nicht zurueck sondern setze ihn direkt.

    hersteller = "mercedes";

    😕



  • Die Klassendefinition ist entweder nu im Header oder nur in der cpp-Datei. Normalerweise in der Headerdatei, also in der cpp-Datei folgendes Loeschen:

    class Auto 
    { 
    Auto::Auto (string her){ 
    hersteller=her; 
    }
    

    Nach class Auto { ... } wird ein ; gesetzt.

    #include <string.h>
    #include <strings.h>
    #inlcude <stdlib.h>
    

    Nur einbinden, was du auch wirklich benutzt. Nichts davon ist bis jetzt noetig. Auch scheint sich ein Schreibfehler eingeschlichen zu habe, Syntaxhighlighting hilft.



  • nur das

    class auto
    

    in der cpp loeschen den konstruktor solltest du dort stehen lassen.


Log in to reply