Ich bin nach ziemlich langer Zeit wieder mit C++ zu arbeiten, benutze Java fast ausschließlich, also treffe ich Fehler, wenn ich versuche, Dinge zu tun, die ich in Java machen kann, aber nicht in C++.C++ Können beim Deklarieren eines Objekts virtuelle Methoden implementiert werden?
In diesem Fall in Java ich so etwas tun könnte:
class MyClass
{
public void myMethod();
}
// -------
MyClass myObject = new MyClass(){
myMethod()
{
// Do stuff
}
};
Im Grunde bin ich die Logik für myMethod Umsetzung(), wenn die MyClass Objekt deklarieren (Beachten Sie, dass mein Syntax könnte deaktiviert sein).
Ich versuche, herauszufinden, ob es ein Äquivalent ist für C++
Mein spezifischen Anwendungsfall ist eine Reihe von Tests für einen Server/Client-Architektur, wo die Testobjekte, die Basis Server/Client abstrakte Klassen erweitern und implementieren die virtuellen Methoden, die ihr Verhalten steuern. Ich muss dieses Verhalten für jeden spezifischen Test ändern, und es wäre praktisch, diese Implementierungen bei der Deklaration der Testobjekte "einzubinden", anstatt mehrere Varianten des Testobjekts für jeden spezifischen Test implementieren zu müssen.
Danke!
EDIT: I Smeeheey ‚s Antwort implementiert haben wie folgt und wirkt wie ein Zauber
int main(...)
{
class TestServer : public BaseServer
{
public:
TestServer(...) : BaseServer(...){...} //Constructor
void virtualFunction(...){...} // Extended function
};
TestServer testInstance(...);
// Execute tests using testInstance object
}
Ziemlich sicher, dass die Schnittstelle für eine bestimmte Klasse beim Kompilieren gesperrt ist. Das einzige, was Sie danach tun können, ist die Manipulation von Funktionszeigern oder das Hinzufügen von * lambda * -Typ-Methoden, die eine spezielle Behandlung erfordern. – tadman
XY-Problem? Verwenden Sie eines der klassischen Designmuster. –