I zu verweisen habe folgende Fehler:ASIO Den Versuch, eine gelöschte Funktion
Error C2280 'Sender::Sender(const Sender &)': attempting to reference a deleted function
Dies ist mein Code:
#pragma once
#include <iostream>
#include <string>
#include "asio.hpp"
using namespace asio;
class Sender
{
public:
Sender(io_service& io_service,
const std::string& host,
const std::string& port) :
io_service_(io_service),
socket_(io_service, ip::udp::endpoint(ip::udp::v4(), 0))
{
ip::udp::resolver resolver(io_service_);
ip::udp::resolver::query query(ip::udp::v4(), host, port);
ip::udp::resolver::iterator iter = resolver.resolve(query);
endpoint_ = *iter;
};
~Sender()
{
socket_.close();
};
void operator()()
{
std::string msg = "";
for (;;)
{
std::cout << "Message: ";
std::cin >> msg;
std::cout << "The value you entered is " << msg << std::endl;
}
}
private:
io_service& io_service_;
ip::udp::socket socket_;
ip::udp::endpoint endpoint_;
};
Und ich bin es so nennen:
io_service io_service;
Sender s{ io_service, "localhost", "1337" };
std::thread sender_thread{ s };
sender_thread.join();
Ich weiß, dass es ist, weil eines der privaten Mitglieder nicht kopiert werden kann, aber ich kann nicht herausfinden, wie man es repariert! Ich möchte keinen Kopierkonstruktor implementieren.
Es sieht so aus, als würde der 'sender_thread' versuchen, eine Kopie von' s' zu erstellen, aber mit dem Kopierkonstruktor, der gelöscht wird, schlägt er fehl. – callyalater
@ M.M gibt es keinen 'sender_thread'-Konstruktor, es ist der Standard-lib-Thread! – moritzg
@callyalater Wie behebe ich das? Muss ich meinen eigenen Kopierkonstruktor zur Verfügung stellen? – moritzg