2016-12-21 6 views
0

Я столкнулся с проблемой при использовании автономной библиотеки asio. Я уверен, что моя проблема - это что-то глупое, что я забыл/забыл, но я не могу на всю жизнь понять, что это такое. Возможно, вы можете мне помочь.Asio resolver не принимает объект io_service в качестве аргумента

Согласно документации asio, я мог бы создать объект-резольвер, выполнив asio::ip::tcp::resolver resolver(io);, где io - это ранее определенный объект asio::io_service. Я делаю это внутри класса, и для этого я понимаю, что вы должны использовать списки инициализаторов класса. Однако здесь я столкнулся с проблемой. У меня есть копия и вставка моего кода ниже, и я считаю, что делаю это правильно, но, возможно, вы можете сказать мне об этом иначе.

#pragma once 
#include <asio.hpp> 

class asiostuff 
{ 
private: 

    asio::io_service io; 

    asio::ip::tcp::resolver resolver; 

    asio::ip::tcp::resolver::query query; 

    asio::ip::tcp::socket socket; 
public: 
    asiostuff() 
     : resolver(io) 
    { //<---- red squiggly line says no default constructor exists 

    } 
}; 

Теперь, я думаю, я делаю это правильно, но MSVC выдает ошибку C2512 при попытке не построить это (не соответствующий конструктор по умолчанию доступен). Когда я

asio::io_service io; 

    asio::ip::tcp::resolver resolver(io); 

вне класса, он компилируется нормально, что указывает мне, что я, вероятно, делать список инициализатор класса неправильно. Есть ли какой-либо объект, который я должен инициализировать перед инициализацией объекта asio::ip::tcp::resolver?

Для справки, я использую MSVC 2015 для компиляции x64 в режиме деблокирования.

EDIT: После некоторых дополнительных испытаний, я обнаружил, что, когда я закомментировать asio::ip::tcp::resolver::query query; и asio::ip::tcp::socket socket; программа компилируется снова. Зачем?

+1

Похоже, что у запроса может не быть конструктора по умолчанию. –

+0

Ах. Это не так, я не понимал, что это вызовет это. Спасибо! – Mynameisspam1

ответ

2

Mikel F решил это в своем комментарии.

В запросе не было конструктора по умолчанию и его необходимо было правильно сконструировать.

MSVC не был достаточно умен, чтобы сказать мне, что конкретно, и я не был достаточно опытным, чтобы знать.

 Смежные вопросы

  • Нет связанных вопросов^_^