Ich habe eine Basisklasse, die aus einer anderen Klasse besteht (nennen wir sie Komponente). Wenn ich von der Base-Klasse erben, ist es möglich, der Component-Klasse Funktionalität hinzuzufügen (vorausgesetzt, Sie können den Base-Code nicht ändern)? Ich möchte grundsätzlich eine 'Derived :: Component :: foo' Funktion.Kann die Funktion der geschachtelten Klassenmitglieder innerhalb der abgeleiteten Klasse nicht definieren
#include <iostream>
class Base
{
public:
void Print() { std::cout << c.data; }
class Component
{
public:
int data;
};
Component c;
};
class Derived : public Base
{
private:
void Component::foo(int value)
{
this->data = value;
}
public:
void bar(int value)
{
this->c.foo(value);
}
};
int main() {
Derived d;
d.bar(4);
d.Print();
}
Dieser Code gibt den folgenden Fehler unter G ++ 4.8 auf Ubuntu:
Fehler: kann nicht Memberfunktion 'Basis :: Component :: foo' in 'Abgeleitet'
Das ist in keiner Situation gültig: Sie müssen die Funktion in der Klassendeklaration definieren. – pingul
Sie können kein Mitglied einer Klasse innerhalb einer anderen Klasse definieren. – kfsone
Gibt es eine Möglichkeit, eine Derived :: Component :: foo Elementfunktion hinzuzufügen? – ruslank