Ошибка в библиотеке thread

При запуске программы выдаёт ошибку. При редактировании её не пишет. Программа принимает и отправляет сообщения по Winsock.

invoke:не найдена соответственная перегруженная функция

#include <iostream>
#include <winsock2.h>
#include <thread>
#pragma comment(lib, "ws2_32.lib")
#pragma warning(disable: 4996)

void prin(SOCKET Connection, char msg[256]) {
    recv(Connection, msg, sizeof(msg), NULL);
    std::cout << msg << std::endl;
}

void otpr(SOCKET Connection, char msg[256]) {
    std::cin >> msg;
    send(Connection, msg, sizeof(msg), NULL);
}

int main() {
    setlocale(LC_ALL, "");
    std::thread prinatie(prin);

    WSAData wsaData;
    WORD DLLVersion = MAKEWORD(2, 1);
    if (WSAStartup(DLLVersion, &wsaData) != 0) {
        std::cout << "Error" << std::endl;
        exit(1);
    }

    SOCKADDR_IN addr;
    int sizeofaddr = sizeof(addr);
    addr.sin_addr.s_addr = inet_addr("192.168.1.45");
    addr.sin_port = htons(1111);
    addr.sin_family = AF_INET;

    SOCKET sListen = socket(AF_INET, SOCK_STREAM, NULL);
    bind(sListen, (SOCKADDR*)&addr, sizeof(addr));
    listen(sListen, SOMAXCONN);

    SOCKET newConnection;
    newConnection = accept(sListen, (SOCKADDR*)&addr, &sizeofaddr);

    if (newConnection == 0) {
        std::cout << "Error #2\n";
    }
    else {
        std::cout << "Client Connected!\n";
        while (true) {
            char msg[256];
            prin(newConnection, msg);
            otpr(newConnection, msg);
        }
    }


    system("pause");
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Намекаю: std::thread prinatie(prin); — с какими параметрами должен вызвать поток функцию prin? Что он в нее должен передать?

Если бы вы передали какие-то параметры вызова, что-то вроде

SOCKET Connection;
char msg[256];
std::thread prinatie(prin,Connection,msg);

то и вопроса бы такого не было...

Только не вздумайте именно так, не думая, и написать :)

P.S. И это не ошибка в библиотеке. Это ошибка в вашей программе.

→ Ссылка