Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Klassen-kampf!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
21.01.2004, 22:19 Uhr
0xdeadbeef
Gott
(Operator)


std::string ist kein Befehl, sondern ein Datentyp. Eine Klasse, um genau zu sein - genau so wie dein Employee. std::string speichert eine Zeichenkette und bietet eine ganze Reihe an Möglichkeiten, sie zu verarbeiten.

Was dein Programm angeht, so wäre es sinnvoller, die Daten außerhalb der Klasse einzulesen und innerhalb der Klasse nur zuzuweisen. In Code sähe das so aus:

C++:
#include <iostream>
#include <string>

class Employee
{
public:
    int GetAge();
    void SetAge(int age);
    int GetYearsOfService();
    void SetYearsOfService(int year);
    int GetSalary();
    void SetSalary(int salary);
    std::string GetName();
    void SetName(std::string name);
private:
    int itsAge;
    int itsYears;
    int itsSalary;
    std::string itsName;
};

std::string Employee::GetName()
{
    return itsName;
}
void Employee::SetName(std::string name)
{
    itsName=name;
}
int Employee::GetAge()
{
    return itsAge;
}
void Employee::SetAge(int age)
{
    itsAge=age;
}
int Employee::GetYearsOfService()
{
    return itsYears;
}
void Employee::SetYearsOfService(int years)
{    
    //Jetzt du
}
int Employee::GetSalary()
{
    return itsSalary;
}
void Employee::SetSalary(int salary)
{
    //Jetzt du
}

void main()
{
    Employee name;
    int age, salary, years_of_service;
    std::string name;

    std::cout << "Name: " << std::flush;
    std::getline(std::cout, name);
    std::cout << "Alter: " << std::flush;
    std::cin >> age;
    std::cout << "Gehalt: " << std::flush;
    std::cin >> salary;
    std::cout << "Jahre: " << std::flush;
    std::cin >> salary;

    name.SetName(name);
    name.SetAge(age);
    name.SetSalary(salary);
    name.SetYearsOfService(years_of_service);

    std::cout << name.GetName() << " ist ein Mitarbeiter der " << name.GetAge() << " Jahre alt ist" << std::endl;
              << name.GetSalary() << " Euro verdient" <<" und seit " << name.GetYearsOfService() << " Jahren dabei ist" <<endl;
    
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
21.01.2004, 22:21 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
Ich kürz das mal ein bisschen ab ok?...


C++:
#include <iostream>
#include <string>
using namespace std;

class Employee{

public:
    int GetAge();
    void SetAge();
    void SetAge(int age);
    int GetYearsOfService();
    void SetYearsOfService();
    void SetYearsOfService(int years);
    int GetSalary();
    void SetSalary();
    void SetSalary(int salary);
    string GetName();
    void SetName();
    void SetName(string name);

private:
    int age;
    int years;
    int salary;
    string name;
};

string Employee::GetName(){return name;}

void Employee::SetName(){
    cout<<"Name:"<<endl;
    cin>>name;
}

void Employee::SetName(string name){this->name=name;}


int Employee::GetAge(){return age;}

void Employee::SetAge(){
    cout<<"Alter:"<<endl;
    cin>>age;
}

void Employee::SetAge(int age){this->age=age;}

int Employee::GetYearsOfService(){return years;}

void Employee::SetYearsOfService(){    
    cout<<"Jahre:"<<endl;
    cin>>years;
}

void Employee::SetYearsOfService(int years){this->years=years;}

int Employee::GetSalary(){return salary;}

void Employee::SetSalary(){
    cout<<"Gehalt:"<<endl;
    cin>>salary;
}

void Employee::SetSalary(int salary){this->salary=salary;}


void main()
{
    Employee name;
    name.SetName("Windowsfreund");
    name.SetAge(23);
    name.SetSalary(80);
    name.SetYearsOfService(12);
    cout<<name.GetName()<<" ist ein Mitarbeiter der "<<name.GetAge()<<" Jahre alt ist";
    cout<<", \n"<<name.GetSalary()<<" Euro verdient";
    cout<<" und seit "<<name.GetYearsOfService()<<" Jahren dabei ist"<<endl;
    
}




Bearbeitung:

Verdammt zu spät... Na immerhin bin ich meist schneller als (un)wissender...


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 21.01.2004 um 22:22 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
21.01.2004, 22:27 Uhr
0xdeadbeef
Gott
(Operator)


Warum zum Geier wollt ihr alle in den Set-Methoden von der Standardeingabe lesen? Das macht so rein überhaupt keinen Sinn!

Ganz abgesehen davon bringt es ihm nichts, wenn wir ihm einfach den Code vorbeten. Der Lerneffekt dabei wäre gleich null. Was meinst du, warum ich mir hier den Arsch aufreiße, das alles zu erklären?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 21.01.2004 um 22:30 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
21.01.2004, 22:30 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
wie kommst du darauf das ich das wollte?
Ich habe das nur gemacht um seinen alten Sch**ss zu lassen...
hab doch die Methoden extra überladen damit wenigstens eine "richtige" dabei ist... Ich dachte es verwirrt ihn wenn ich zuviel ändere

ich wette er wird gar nicht darauf stehen das du nicht using namespace std vervendet hast... ich benutzte das zwar eigentlich auch nicht aber in dem fall wollte ich nicht zuviel verwirrung stiften...


Zitat:

Ganz abgesehen davon bringt es ihm nichts, wenn wir ihm einfach den Code vorbeten. Der Lerneffekt dabei wäre gleich null. Was meinst du, warum ich mir hier den Arsch aufreiße, das alles zu erklären?


Das hab ich mich auch schon gefragt...

Aber mal im Ernst ich glaube in dem Fall ist es besser wenn er das mal sieht... Vielleicht ist ja gar nicht so schlecht wenn er zwei verschiedene Lösungen hat... Ich fande es wirkte zumindest so als ob er das nicht geklaut hat sondern selber versucht hat ne Lösung zu finden und ist halt nicht weitergekommen...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 21.01.2004 um 22:32 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
21.01.2004, 22:50 Uhr
0xdeadbeef
Gott
(Operator)


Oh, ich wollte seine Lernbereitschaft nicht in Frage stellen. Aber gerade deswegen macht es wenig Sinn, alles ohne Erklärung vorzubeten. Ich muss mich schon mit unfähigen Sysads rumschlagen, da kann ich wenigstens versuchen, gute Programmierer zu erschaffen

@Tommi Bisic: was verstehst du an private/protected/public nicht?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
21.01.2004, 22:52 Uhr
KaraHead



Ich dachte immer ihr macht keine Hausaufgaben für andere???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
21.01.2004, 23:02 Uhr
0xdeadbeef
Gott
(Operator)


Wenn jemand einen Ansatz zeigt, spezifische Fragen stellt und generell Lernbereitschaft zeigt, ist es schon OK, ein bisschen zu helfen. Jedenfalls ist das meine Meinung.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
21.01.2004, 23:04 Uhr
KaraHead



War ja nur ein Witz.
Ich wollt ja auch posten
aber da hattest du ja schon die Lösung ausgeplaudert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
21.01.2004, 23:20 Uhr
Tommi Bisic



Argh ich werde verrückt
Ich habe es jetzt so versucht wie du es mir empfohlen hast und (nur) einen Fehler bekomme ich nicht weg:

C++:
#include <iostream>
#include <string>

class Employee
{
public:
    int GetAge();
    void SetAge(int age);
    int GetYearsOfService();
    void SetYearsOfService(int year);
    int GetSalary();
    void SetSalary(int salary);
    std::string GetName();
    void SetName(std::string name);
private:
    int itsAge;
    int itsYears;
    int itsSalary;
    std::string itsName;
};

std::string Employee::GetName()
{
    return itsName;
}
void Employee::SetName(std::string name)
{
    itsName=name;
}
int Employee::GetAge()
{
    return itsAge;
}
void Employee::SetAge(int age)
{
    itsAge=age;
}
int Employee::GetYearsOfService()
{
    return itsYears;
}
void Employee::SetYearsOfService(int years)
{    
    itsYears=years;//Jetzt du
}
int Employee::GetSalary()
{
    return itsSalary;
}
void Employee::SetSalary(int salary)
{
   itsSalary=salary; //Jetzt du
}

void main()
{
    Employee name;
    int age, salary, years_of_service;
    std::string name;

    std::cout << "Name: " << std::flush;
    std::cin >> name;
    //std::getline(std::cout, name);
    std::cout << "Alter: " << std::flush;
    std::cin >> age;
    std::cout << "Gehalt: " << std::flush;
    std::cin >> salary;
    std::cout << "Jahre: " << std::flush;
    std::cin >> salary;

    name.SetName(name);
    name.SetAge(age);
    name.SetSalary(salary);
    name.SetYearsOfService(years_of_service);

    std::cout << name<< " ist ein Mitarbeiter der " << name.GetAge() << " Jahre alt ist"<<std::flush;
    std::cout << name.GetSalary() << " Euro verdient" <<" und seit " << name.GetYearsOfService() << " Jahren dabei ist" <<std::flush;
    
}




und zwar taucht der fehler beim kompillieren auf

CProgramme\Microsoft Visual Studio\MyProjects\klassen\klassen.cpp(59) : error C2371: 'name' : Neudefinition; unterschiedliche Basistypen
CProgramme\Microsoft Visual Studio\MyProjects\klassen\klassen.cpp(57) : Siehe Deklaration von 'name'
Fehler beim Ausführen von cl.exe.

Ich hoffe ansonsten habe ich es einigermaßen gut gemacht...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
21.01.2004, 23:38 Uhr
0xdeadbeef
Gott
(Operator)


Ja, klar, mein Fehler. Du kannst nicht zwei Variablen 'name' in einem Scope haben. Machs am besten so:

C++:
    Employee emp;
    //...
    emp.SetName(name);
    emp.SetAge(age);
    emp.SetSalary(salary);
    emp.SetYearsOfService(years_of_service);
    //...und bei der cout-geschichte das gleiche.


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: