«... неявно удалено, потому что определение по умолчанию будет неправильно сформировано:» - Инициализация объекта WebServer () - PullRequest
0 голосов
/ 21 марта 2020

Согласно документации, WebServer инициализируется следующим образом в. cpp class

WebServer server(80);

Чтобы вписать это в мой созданный класс, который я хотел бы сделать.

private:
   WebServer server;

в моем заголовке и

this->server = WebServer(80);

в моем определении класса, поэтому у меня есть нормальное объявление моего WebServer. Но это выдает ошибку: .... ' неявно удаляется, потому что определение по умолчанию будет некорректно сформировано:

Как правильно инициализировать WebServer?

РЕДАКТИРОВАТЬ: Хорошо, теперь мой код выглядит следующим образом:

class MyClass{
    public:
        MyClass(String clientId, String clientSecret, String redirectUri);
    private:
        String clientId;
        String clientSecret;
        String redirectUri;
        WebServer server;
};

и

MyClass::MyClass(String clientId, String clientSecret, String redirectUri):clientId{clientId}, clientSecret{clientSecret}, redirectUri{redirectUri}, server{80}{}

1 Ответ

1 голос
/ 21 марта 2020

Из-за RAII инструкция WebServer server; пытается инициализировать переменную с объектом типа WebServer, используя конструктор по умолчанию.

Для использования другой конструктор для создания этой переменной экземпляра, вы должны предоставить его в списке инициализации конструктора:

MyClass::MyClass()
 :server{80}
{
}

Это говорит компилятору о создании объекта server со значениями инициализации 80, что в ходы передаются конструктору WebServer.

...