Ich versuche, eine private Variable einer Klasse in einem Objekt, das innerhalb dieser Klasse initialisiert wird, zu ändern. Meine Absicht kann aus dem einfachen Beispiel unten gezogen werden. die Increment
genannt von obj
sollte die BaseClass::stuff
erhöhen.Wie Zugriff auf private Variable von Objekt instanziiert innerhalb der Klasse
template <typename ObjectType>
class BaseClass{
public:
int Increment(){
return obj.Increment();
}
private:
int stuff = 0;
ObjectType obj;
};
class ObjectType{
public:
int Increment()
{
return BaseClass<ObjectType>::stuff++;
};
};
int main() {
BaseClass<ObjectType> base;
base.Increment(); // should increase stuff by 1;
}
Eine Möglichkeit, die ich denken kann ist vorbei Sachen als Parameter obj.Increment()
.
Gibt es eine Möglichkeit, dies zu erreichen, ohne es als Parameter übergeben?
Verwenden 'friend' Stichwort? – fghj
Ein Objekt hat keine Kenntnis davon, zu welchem Objekt es gehört. Wenn Sie solches Wissen hinzufügen, erhalten Sie im Allgemeinen sehr spröden Code. –