套接字具有一个构造函数,该构造函数将winsock SOCKET作为参数并将其存储在私有(private)变量中:

Socket::Socket(SOCKET s) {
    this->s = s;
}

我正在尝试创建一个“GameSocket”类,该类将解析我的Socket类中的数据:
class GameSocket : public Socket {

protected:

    void ParseData(unsigned char* data, int size);

};

在这些类旁边,我有一个“服务器”类,可以在需要时创建新的套接字:
GameSocket* Server::Accept() {

    SOCKET a = accept(s, 0, 0);
    if(a==SOCKET_ERROR) {
        return 0;
    }
    else {
        return new GameSocket(a);
    }

}

但是,这给我最后一个“else”错误:
error C2664: 'GameSocket::GameSocket' : cannot convert parameter 1 from 'SOCKET' to 'const GameSocket &'

处理派生类时,构造函数一定缺少某些东西。

别对我太苛刻,我是C++和OOP的新手

最佳答案

添加GameSocket的构造函数

class GameSocket : public Socket {

public:

    // you need to add
    GameSocket(SOCKET s) : Socket(s) {}

protected:

    void ParseData(unsigned char* data, int size);

};

关于c++ - C++类-派生类中的构造函数声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/386345/

10-12 07:36