Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Данила915
1 / 1 / 0
Регистрация: 13.01.2016
Сообщений: 9
#1

Thread C2893. Хотя аргументов у вызываемой функции нет - C++

22.01.2016, 19:32. Просмотров 312. Ответов 1

Это код, где вызывается thread:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void CChatClientDlg::OnBnClickedBtnSendMessage()
{
    if (client.isConnected()) {
        UpdateData(true);
        char mes[255];
        CStringA mesA(m_sMessage);
        strcpy(mes, (const char *)mesA);
        client.mwrite(mes);
    }
    else {
        MessageBox(L"Вы не подключены к серверу!", L"Подключение", MB_ICONEXCLAMATION);
        connectpDlg dlg;
        if (IDOK == dlg.DoModal()) {
            char ip[255];
            CStringA ipA(dlg.m_sIp);
            strcpy(ip, (const char *)ipA);
            char nick[255];
            ipA = dlg.m_sNickname;
            strcpy(nick, (const char *)ipA);
            if (client.init(ip, nick) != client.INIT_OK) {
                MessageBox(L"Не удалось подключиться", L"Ошибка", MB_ICONERROR);
            }
            else {
                thread listen(&CChatClientDlg::myListen); //<- Здесь выдает ошибку
            }
        }
    }
}
Сама функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void CChatClientDlg::myListen()
{
    char s[255];
    CString mes;
    while (true) {
        if (client.mlisten(s) == client.LISTEN_OK) {
            mes = s;
            ListMessages.AddString(mes);
        }
        else {
            client.finish();
            return;
        }
    }
}
Код ошибки:
Кликните здесь для просмотра всего текста
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(238): error C2893: Сбой при специализации функции-шаблона "unknown-type std::invoke(_Callable &&,_Types &&...)"
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(238): note: Со следующими аргументами шаблона:
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(238): note: "_Callable=void (__thiscall CChatClientDlg::* )(void)"
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(238): note: "_Types={int}"
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(247): note: см. ссылку на создание экземпляров функции шаблон при компиляции "void std::_LaunchPad<_Target>::_Execute<0,1>(std::tuple<void (__thiscall CChatClientDlg::* )(void),int> &,std::integer_sequence<_Ty,0,1>)"
1> with
1> [
1> _Target=std::unique_ptr<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>,std::default_delete<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>>>,
1> _Ty=size_t
1> ]
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(247): note: см. ссылку на создание экземпляров функции шаблон при компиляции "void std::_LaunchPad<_Target>::_Execute<0,1>(std::tuple<void (__thiscall CChatClientDlg::* )(void),int> &,std::integer_sequence<_Ty,0,1>)"
1> with
1> [
1> _Target=std::unique_ptr<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>,std::default_delete<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>>>,
1> _Ty=size_t
1> ]
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(242): note: при компиляции функции-члена "<Нет данных>" класса <Нет данных>
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(230): note: см. ссылку на создание экземпляров функции шаблон при компиляции "void std::_LaunchPad<_Target>::_Run(std::_LaunchPad<_Target> *) noexcept"
1> with
1> [
1> _Target=std::unique_ptr<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>,std::default_delete<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>>>
1> ]
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(256): note: см. ссылку на создание экземпляров класса шаблон при компиляции "std::_LaunchPad<_Target>"
1> with
1> [
1> _Target=std::unique_ptr<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>,std::default_delete<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>>>
1> ]
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\thread(52): note: см. ссылку на создание экземпляров функции шаблон при компиляции "void std::_Launch<std::unique_ptr<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>,std::default_delete<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>>>>(_Thrd_t *,_Target &&)"
1> with
1> [
1> _Target=std::unique_ptr<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>,std::default_delete<std::tuple<void (__thiscall CChatClientDlg::* )(void),int>>>
1> ]
1> c:\users\kp0hy\onedrive\документы\visual studio 2015\projects\клиент чатика\клиент чатика\cchatclientdlg.cpp(200): note: см. ссылку на создание экземпляров функции шаблон при компиляции "std::thread::thread<void(__thiscall CChatClientDlg::* )(void),int,void>(_Fn &&,int &&)"
1> with
1> [
1> _Fn=void (__thiscall CChatClientDlg::* )(void)
1> ]
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2016, 19:32     Thread C2893. Хотя аргументов у вызываемой функции нет
Посмотрите здесь:

Передача аргументов функции C++
C++ Передача аргументов в функции
C++ error C2661: pow: нет перегруженной функции, принимающей 1 аргументов
Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) C++
C++ Передача аргументов функции
Передача аргументов функции C++
нет перегруженной функции, принимающей 3 аргументов C++
C++ Имена аргументов в прототипе функции
C++ Замена аргументов функции
C++ Некорректная работа повторно вызываемой функции
C++ Проверка аргументов рекурсивной функции
Нет перегруженной функции, принимающей 2 аргументов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12884 / 7270 / 811
Регистрация: 27.09.2012
Сообщений: 17,968
Записей в блоге: 2
Завершенные тесты: 1
22.01.2016, 19:36     Thread C2893. Хотя аргументов у вызываемой функции нет #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
CChatClientDlg это класс?
Если да, то значит сие
C++
1
void CChatClientDlg::myListen()
для вызова потребует еще указатель на объект для которого оное вызывается.
C++
1
thread listen(&CChatClientDlg::myListen);//Здесь указание функции-члена, но с каким объектом будем работать?
Yandex
Объявления
22.01.2016, 19:36     Thread C2893. Хотя аргументов у вызываемой функции нет
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru