を参照しようとすると:ASIOは、私は次のエラーを持っている削除機能
Error C2280 'Sender::Sender(const Sender &)': attempting to reference a deleted function
は、これは私のコードです:
#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_;
};
そして、私はこのようにそれを呼んでいる:
io_service io_service;
Sender s{ io_service, "localhost", "1337" };
std::thread sender_thread{ s };
sender_thread.join();
プライベートメンバーの1人がコピーできないためですが、修正する方法がわかりません。私はコピーコンストラクタを実装したくありません。
'sender_thread'が' s'のコピーを作成しようとしているように見えますが、コピーコンストラクタを削除すると失敗します。 – callyalater
@ M.M 'sender_thread'コンストラクタはありません。それはstd libスレッドです! – moritzg
@callyalaterこれはどのように修正するのですか?私自身のコピーコンストラクタを提供する必要がありますか? – moritzg