बूस्ट :: एएसओ का उपयोग करने वाले कोड का निम्नलिखित बिट लें।अजीब सी 4512 चेतावनी। क्यूं कर?
#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
{
}
};
आप दो में चिह्नित लाइनों टिप्पणी तो संकलक (दृश्य स्टूडियो 2010) निम्न चेतावनी जब/W4 पर संकलन बाहर देता है।
warning C4512: 'SocketTest' : assignment operator could not be generated
उन दो पंक्तियों को इतना खास बनाता है क्या? उनका अस्तित्व असाइनमेंट ऑपरेटर की पीढ़ी की अनुमति क्यों देता है?
आह, हाँ। आप सही लगते हैं। बढ़ावा से विरासत :: noncopyable चेतावनी हल किया। यह भी बताता है कि एक परमाणु प्रकार (int और int) के साथ समस्या को पुनर्जीवित करने का मेरा प्रयास इस मुद्दे को फिर से नहीं बनाता है। बहुत धन्यवाद। – UberMongoose
भविष्य से अद्यतन: C++ 11 में इसे संभालने का एक बेहतर तरीका है: http://stackoverflow.com/questions/9458741/with-explicitly-deleted-member-functions-in-c11-is-it-still -worthwhile-टू-INH – Tim