Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.126.80] |
|
Сообщ.
#1
,
|
|
|
Объясните как сделать у меня есть такой пример кода.
net::io_context ioc; websocket::stream<tcp::socket> ws{ ioc }; И он работает хорошо. Но я хочу эти переменные вынести в статический класс так: Memory.h class memory { public: static net::io_context ioc; static websocket::stream<tcp::socket> ws; }; На этой стадии тоже нет ошибок все ок. Но когда я пытаюсь задать значение для ws таким способом #include "Memory.h" //.... net::io_context ioc; memory::ws = ioc; // или так memory::ws {ioc}; То получаю ошибку Цитата Error (active) E0349 no operator "=" matches these operands Собственно как блин правильно писать? - я синтаксис не могу понять. |
Сообщ.
#2
,
|
|
|
Выглядит это так, что у websocket::stream<> есть конструктор из net::io_context, но нет аналогичного operator=().
|
Сообщ.
#3
,
|
|
|
Блин и что делать? - и как быть?
|
Сообщ.
#4
,
|
|
|
Инициализировать конструктором.
websocket::stream<tcp::socket> memory::ws = ioc; // или так websocket::stream<tcp::socket> memory::ws {ioc}; |
Сообщ.
#5
,
|
|
|
что означает нет оператора = ?
|
Сообщ.
#6
,
|
|
|
Цитата PotterHarry @ Такое действие не описано. Предполагается, что открытие сокета будет производиться только конструктором при создании переменной.что означает нет оператора = ? Что разумно, так как описатель сокета не выглядит объектом, который можно безопасно копировать. У него наверняка ещё и нет конструктора копии, и в функции его можно передавать только по ссылке. |