无法在 main 中调用函数(使用 C++ 在 UDP 客户端应用程序中继承)

Unable to call function in main (Inheritance in UDP Client App using C++)

我已经创建了一个单独的 UDP 服务器应用程序和一个客户端应用程序,它们正在相互通信。我已尝试将继承作为此应用程序的下一步(Base class : udp,child class: udpClient)。我已经为客户开发了代码,我在下面展示了我的代码并附有注释作为解释。

我在代码的最后一行遇到问题,其中对象用于调用派生 class。我不知道在这里给出什么参数。我已经用评论突出了问题区域。感谢任何帮助

编辑:另外,50003 是端口号吗?如果它在 70000 左右,检查应该会出错,对吗?但它不是。会有什么问题?

UDP客户端程序

#include <iostream>
#include <WS2tcpip.h>

#pragma comment (lib, "ws2_32.lib")

using namespace std;

class udp {

protected:
    WSADATA data;
    WORD version = MAKEWORD(2, 2);

    int wsOk = WSAStartup(version, &data);

public:
    void checkudp()
    {
        if (wsOk != 0)
        {
            cout << "Can't start Winsock! " << wsOk;
            return;
        }
    }

};

class udp_client : public udp {

private:
    sockaddr_in server;
    char clientIp[256];
    int argc;
    char* argv[];

public:
    void udpworking(*int argc, char* argv[]*) { //PROBLEM HERE with call to main function
        
        server.sin_family = AF_INET; // AF_INET = IPv4 addresses
        server.sin_port = htons(50003); // Little to big endian conversion
        inet_pton(AF_INET, "127.0.0.1", &server.sin_addr); // Convert from string to byte array

        // Socket creation, note that the socket type is datagram
        SOCKET out = socket(AF_INET, SOCK_DGRAM, 0);

        // Write out to that socket
        string s(argv[1]);
        int sendOk = sendto(out, s.c_str(), s.size() + 1, 0, (sockaddr*)&server, sizeof(server));

        if (sendOk == SOCKET_ERROR)
        {
            cout << "That didn't work! " << WSAGetLastError() << endl;
        }
        closesocket(out);
        WSACleanup();
    }
};
void main()
{
    udp_client obj;
    obj.udpworking(); //Parameter problem with function call
}

udp_client::udpworking需要两个参数,需要传入参数(括号内)。

也如评论中所述,void main() 不是此函数的有效签名。只有 int main()(忽略所有参数)和 int main(int argc, char **argv)(接受命令行参数)是有效签名。

尝试这样的事情:

int main(int argc, char **argv) {
    udp_client obj;
    obj.udpworking(argc, argv);
    return 0;
}

PS:我认为你在 SO 上发布时在函数中的参数周围添加了星星? (udpworking(*int argc, char* argv[]*))