Code: Alles auswählen
class Listener
{
public:
virtual void callback(void) = 0;
};
class Base
{
public:
Base(Listener* pListener);
private:
Listener* mpListener;
};
class Subclass : public Base, Public Listener
{
public:
Subclass(void);
};
Code: Alles auswählen
Base::Base(Listener* pListener)
: mpListener = pListener
{
}
Subclass::Subclass(void)
: Base(this)
{
}
Die Basisklasse verlangt nun, dass man einen Pointer auf eine Implementation ihres Callbackinterfaces an ihren Konstruktor übergibt.
Die Übergabe des this-pointers an den Basisklassenkonstruktor führt allerdings in VS zum Warning C4355: "'this' : used in base member initializer list".
Da ich im Basisklassenkonstruktor nur den Pointer auf den übergebenen Listener in einer Membervariable abspeichere und sonst nicht auf die erbende Klasse zugreife, sollte das ganze problemlos funzen.
Gibt es elegantere Möglichkeiten, das Warning los zu werden, als via #pragma warning (disable : 4355 )?