Nehmen Sie das folgende Bit Code, der boost :: asio verwendet.Seltsame C4512 Warnung. Warum?
#include <boost/asio.hpp>
using boost::asio::ip::tcp;
class SocketTest
{
private:
boost::asio::io_service& mIOService;
tcp::acceptor mAcceptor; // Comment this line
public:
SocketTest(boost::asio::io_service& io_service)
: mIOService(io_service)
, mAcceptor(io_service, tcp::endpoint(tcp::v4(), 8080)) // Comment this line
{
}
};
Wenn Sie die beiden markierten Linien der Compiler (Visual Studio 2010) Kommentar gibt die folgende Warnung heraus beim Kompilieren auf/W4.
warning C4512: 'SocketTest' : assignment operator could not be generated
Was macht diese beiden Linien so besonders? Warum erlaubt ihre Existenz die Generierung des Zuweisungsoperators?
Ah, ja. Du scheinst richtig zu sein. Vererben von boost :: noncopyable löste die Warnung. Es erklärt auch, warum mein Versuch, das Problem mit einem atomaren Typ (int & und int) neu zu erstellen, das Problem nicht neu erstellt. Danke vielmals. – UberMongoose
Update von der Zukunft: in C++ 11 gibt es einen besseren Weg, dies zu handhaben: http://stackoverflow.com/questions/9458741/with-explicitly-deleted-member-functions-in-c11-is-it-still -Worthwhile-to-inh – Tim