Wie den Zugriff auf eine Private Variable?

Diese Frage soll nicht klingen, als krass beleidigen wie es wohl jetzt ist.

Dies ist eine Hausaufgabe, und das Datenblatt ist knapp und schlecht entworfen, um das Mindeste zu sagen. Wir haben eine Funktion:

double refuel( int liter, GasStation *gs )
{
    //TODO: Access private variable MaxFuel of gs and decrement.
}

Klingt einfach genug? Sollte es sein, aber die Klasse Tankstelle kommt keine Funktion, die auf die private variable MaxFuel. Also wie kann ich es trotzdem mit der Funktion tanken?

Ich bin nicht angesichts der Erstellung einer Funktion setFuel( int liter ) weil die Lehrer immer beschwert, eher energetisch, wenn ich eine änderung seiner Spezifikation. Also... ich glaube, ich habe zu tun, irgendeine Art von hack um ihn herum, aber ich bin mir nicht sicher, wie man dies, ohne explizit das ändern der Funktion nur in der Tankstelle und gibt es einen parameter, so dass ich ihn hier nennt.

Irgendwelche Tipps vielleicht?

  • Private Variablen sind so konzipiert, dass nicht zugegriffen werden. Welche Art von Hausaufgaben ist!
  • Let me get this straight. In einer nussschale, Ihre Aufgabe ist es, gegeben eine konkrete Klasse, die Sie nicht ändern können, speziell für den Zugang zu und ändern ein eigenes Mitglied, das keine Zugriffsfunktionen, die von außerhalb der Klassendefinition?
  • Wow. Die übergabe einer bloßen Klasse Zeiger auf eine Funktion den Zugriff auf eine private var. Ick. Gibt es irgendeine Art von get () - Methode für die MaxFuel Wert, den Sie suchen oder vielleicht gibt es eine enum-oder const-Sie sind doch zu packen? Wenn diese gegeben wurde, mehrere Studenten, ich würde denken, dass würde dieses problem haben, kommen nun durch.
  • Denken Sie daran, Kinder: Nur Freunde können berühren Ihre Geschlechtsteile.
  • Dieser Trainer muss auf Kiel geschleppt.
  • Gut, Lesen Sie Herb Sutter ' s nehmen auf es @ gotw.ca/gotw/076.htm; vor allem die "Sprache Rechtsanwalt-Lösung": -)
  • zildjohn01: ja @ Dorgan: NÖ, die ganzen specs, wie gesagt, sind äußerst rar. Kein enum, keine erbschaft, kein Freund-Funktionen. @ Abhay: Danke für den link!
  • also laut Sutter Artikel, Abhay wies nach, der Schlüssel (für eine standard-konforme Lösung, sowieso) ist, ob das GasStation - Klasse eine member-Vorlage, können spezialisiert werden. ansonsten sieht es lke, sind Sie stecken mit einer der "weniger legal" - hacks.
  • möglich, Duplikat der Kann ich die Transformation eines Objekts und den Zugriff auf die privaten Datenelemente in C++?

InformationsquelleAutor IAE | 2010-06-10
Schreibe einen Kommentar