Wiso nicht eindeutig?
-
Folgender Fehler:
/home/christoph/dev/my/tbrts/src/net/server/CServer.cpp: In constructor »net::CServer::CServer()«: /home/christoph/dev/my/tbrts/src/net/server/CServer.cpp:21: error: no matching function for call to »net::ANetwork::ANetwork(size_t, net::CMailbox)« /home/christoph/dev/my/tbrts/src/net/common/ANetwork.hpp:38: note: candidates are: net::ANetwork::ANetwork(size_t, net::CMailbox&) /home/christoph/dev/my/tbrts/src/net/common/ANetwork.hpp:35: note: net::ANetwork::ANetwork(const net::ANetwork&)Folgender Code
CServer::CServer() : ANetwork(static_cast<std::size_t>(15), CMailbox(this)), log_("CServer", logging::CLog::NOTICE) { }Warum ist das jetzt nicht eindeutig? Und wie bekomme ich den Compiler jetzt dazu, das zu verstehen? Muss ich jetzt deswegen einen smart-pointer verwenden?
EDIT://
In wie weit kann ich eigentlich den this-Pointer der Basisklasse in deren C'tor verwenden? (Ich brauche einen pointer auf die Basisklasse, ein Cast wird dadurch also nicht fällig.
-
CMailbox(this) ist ein temporäres Objekt, daran kannst du keine nicht-konstante Referenz binden.
-
OK das macht irgendwo Sinn. Eine konstante Referenz sollte IMO auch ausreichen
-
Bist du dir über die Lebenszeitproblematik im klaren? Das temporäre Objekt wird am Ende der Abarbeitung des Ausdrucks zerstört (also hier wohl direkt nach dem Basisklassenkonstruktoraufruf), deine Referenz hängt dann in der Luft.