cannot access private member deklariert in der Klasse 'Soldat'
Ich bin neu in der OOP und ich verstehe nicht, wie man Argumente übergeben, die zu den Klassen.
Der Klasse Erklärung:
class Soldier
{
Soldier(int SetHealth, int SetStrength);
private:
int health;
int strength;
public:
void attacked();
void healed();
int getHealth();
int getStrength();
};
Definition des Konstruktors:
Soldier::Soldier(int SetHealth, int SetStrength):
health(SetHealth),
strength(SetStrength)
{
}
Wenn ich versuche das übergeben von Argumenten an, die Klasse heißt es hierzu:
1>------ Build started: Project: ConsoleApplication6, Configuration: Debug Win32 ------
1> ConsoleApplication6.cpp
1>c:\users\user\documents\visual studio 2012\projects\consoleapplication6\consoleapplication6\consoleapplication6.cpp(11): error C2248: 'Soldier::Soldier' : cannot access private member declared in class 'Soldier'
1> c:\users\user\documents\visual studio 2012\projects\consoleapplication6\consoleapplication6\soldier.h(7) : see declaration of 'Soldier::Soldier'
1> c:\users\user\documents\visual studio 2012\projects\consoleapplication6\consoleapplication6\soldier.h(6) : see declaration of 'Soldier'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
InformationsquelleAutor user2594877 | 2013-07-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Menschen schon beantwortet habe dies jetzt aber explizit:
BTW, Was sind befestigt und abheilen tun? Sie nehmen keine Parameter hat und nichts zurück. Seltsam.
Bearbeiten (in Anbetracht der jüngsten down-Stimmen):
Verschieben der Konstruktor der öffentlichkeit "Abschnitt", macht es
public
. Die Dinge beginnen wieprivate
bis Sie etwas anderes sagen.health
intern.Oder drucken Sie es, oder null, ... 😉
Diese Antwort erklärt nicht die Lösung in keiner Weise.
InformationsquelleAutor doctorlove
Konstruktor ist
private
(genau wie die Fehlermeldung sagt).Standardmäßig jedes Mitglied eines
Class
istprivate
wenn Sie nicht geben Sie eine Zugriffsebene.InformationsquelleAutor undu
Den Konstruktor, den Sie definiert haben, ist ein Zugriff
Standardmäßig, wenn man nicht alles erwähnen, die Zugriffsebene ist privat
So ändern Sie es in der öffentlichkeit für den Zugang.
InformationsquelleAutor Keval Doshi
Die Mitglieder einer Klasse sind implizit
private
es sei denn, Sie ändern Sie die Zugriffsebene aufpublic
oderprotected
, soSoldier::Soldier(int SetHealth, int SetStrength);
privat ist - ergo können Sie nicht darauf zugreifen.InformationsquelleAutor Luchian Grigore
changet Konstruktor-Deklaration zu diesem
public Soldier(int SetHealth, int SetStrength);
InformationsquelleAutor Петър Петров