2016-03-29 15 views
0

So versuche ich eine Klasse (Version) mit Datenelementen zu erstellen. Die Member-Funktionen sind Setter (ermöglichen kaskadierende Aufrufe) und Getter (verwenden Sie PLP und behandeln konstante Objekte). In der int main erlaubt es dem Benutzer, die Zahlen einzugeben, dann müssen kaskadierende Aufrufe von Mitgliedsfunktionen für alle Datenmitglieder in einer Anweisung verwendet werden und die Version durch Aufrufen der Getter angezeigt werden und sie müssen nur den Wert des Datenmembers zurückgeben.Erstellen einer Klasse bei Verwendung von Kaskadierung und PLP

Ich habe so ziemlich alles codiert, aber ich habe das Gefühl, dass ich einen Schritt verpasse oder etwas falsch mit den Parametern mache. Mein Fehler sagt, dass ich ein ')' für meine Setter brauche, aber ich habe das Gefühl, dass es ein anderes Problem ist. Ich habe nicht alle meine Notizen bekommen, wie kann ich das machen, also kann mir jemand sagen, was ich vermisse oder reparieren muss? Vielen Dank!

#include<iostream> 

using namespace std; 

class Version 
{ 
private: 
    int major, minor, service_pack; 
public: 
    Version(); 
    Version& setMajor(int maj); 
    Version& setMinor(int min); 
    Version& setService_pack(int sp); 
    int getMinor(Version *const this); 
    int getMajor(Version* const this); 
    int getService_pack(Version* const this); 
}; 

Version::Version() 
{ 
    major = 0; 
    minor = 0; 
    service_pack = 0; 
} 

Version& Version::setMinor(int min) 
{ 
    minor = min; 
    return *this; 
} 

Version& Version::setMinor(int maj) 
{ 
    major = maj; 
    return *this; 
} 

Version& Version::setMinor(int sp) 
{ 
    service_pack = sp; 
    return *this; 
} 

int Version::getMinor(Version* const this) 
{ 
    return this->minor; 
    (*this).minor; 
} 

int Version::getMajor(Version* const this) 
{ 
    return this->major; 
    (*this).major; 
} 

int Version::getService_pack(Version* const this) 
{ 
    return this->service_pack; 
    (*this).service_pack; 
} 

int main() 
{ 
    int minor, major, service_pack; 
    Version a; 
    cout << "Enter minor, major, and service pack: " << endl; 
    cin >> minor, major, service_pack; 

    a.setMinor(minor).setMajor(major).setService_pack(service_pack); 

    cout << "Major: " << a.getMajor() << "Minor: "<< a.getMinor << "Service Pack: " << a.getService_pack(); 

    system("PAUSE"); 

} 

Antwort

0

Sie fehlen parenbtheses in main() für a.getMinor() diplaying. Ohne die Klammern verweisen Sie auf die Elementfunktion selbst.

Ihre Getter sollten grundsätzlich keine Argumente annehmen, wenn Sie den Wert zurückgeben. Vermeiden Sie auf jeden Fall die Übergabe von Argumenten mit der Bezeichnung this.

Eine weitere Verbesserung konnte man machen würde, werden die Getter als const zu erklären:

int Version::getMinor() const 
{ 
    return minor; // this-> is only needed to disambiguate 
} 
+0

Oh gutes Auge! Aber weißt du, ob meine Parameter für meine Getter richtig sind? – TheEWL

+0

Nein, Ihre Getter sollten kein Argument nehmen. – Christophe

+0

@TheEWL Ich habe meine Antwort bearbeitet, um sie zu vervollständigen – Christophe

Verwandte Themen