C++ 访问头文件中的数组指针?
通过尝试访问“clientArray”中的TCPSocket,我得到了一个访问冲突错误。我如何正确访问它 我的头文件包含TCPSocket*clientArrayC++ 访问头文件中的数组指针?,c++,networking,sdl,sdl-net,C++,Networking,Sdl,Sdl Net,通过尝试访问“clientArray”中的TCPSocket,我得到了一个访问冲突错误。我如何正确访问它 我的头文件包含TCPSocket*clientArray public: TCPsocket *clientArray; SDLNet_SocketSet aSocketSet; bool serverOn; 它是在我的构造函数中定义的: clientArray = new TCPsocket[maxsockets]; aSocketSet = SDLNet_AllocSocketSet(
public:
TCPsocket *clientArray;
SDLNet_SocketSet aSocketSet;
bool serverOn;
它是在我的构造函数中定义的:
clientArray = new TCPsocket[maxsockets];
aSocketSet = SDLNet_AllocSocketSet(maxsockets);
它可以在我的另一个功能中访问(在这里工作没有问题):
我正在从游戏的更新函数调用有问题的函数,如下所示:
void Game::Update(){
while (g_playersConnected == 2)
{
printGrid();
serverSocket->waitForPlayer((playerTurn-1));
changeTurn();
system("pause");
}
//cout << "Game's Update is running" << endl;
};
我应该朝哪个方向解决这个问题
最好的您是否检查了
playerNum
是否小于maxsockets
?您的构造函数、赋值运算符和析构函数是什么样子的?请用代码编辑您的问题,而不是将其作为注释发布。您是否定义了析构函数、复制构造函数和复制赋值运算符?还有,在“以后…”之前的过渡期间发生了什么。在此期间,通过复制等方式,您的数据可能发生了许多事情。请尝试用一个非常小的示例重现您的问题,您甚至可能自己发现问题:-)我认为获取和使用调试器是最后一个问题的最佳答案。它应该能够在SEGFULT上断开,然后告诉您实际原因,并从那里开始。您是否检查了playerNum
是否小于maxsockets
?您的构造函数、赋值运算符、,析构函数是什么样子的?请用代码编辑您的问题,而不是将其作为注释发布。您是否定义了析构函数、复制构造函数、复制赋值运算符?还有,在“以后…”之前的过渡期间发生了什么。在此期间,通过复制等方式,您的数据可能发生了许多事情。请尝试用一个非常小的示例重现您的问题,您甚至可能自己发现问题:-)我认为获取和使用调试器是最后一个问题的最佳答案。它应该能够在segfault上断开,然后告诉您实际原因,并从那里开始。
Unhandled exception at 0x00AED839 in Server.exe: 0xC0000005: Access violation reading location 0x0000000C.
void Game::Update(){
while (g_playersConnected == 2)
{
printGrid();
serverSocket->waitForPlayer((playerTurn-1));
changeTurn();
system("pause");
}
//cout << "Game's Update is running" << endl;
};
void ServerSocket::waitForPlayer(int playerNum)
{
cout << "Waiting for player " << playerNum + 1 << " (In array : " << playerNum << ")." << endl;
char text[10];
SDLNet_TCP_Recv(clientArray[playerNum], text, 10);
std::cout << "received text = " << text << endl;
interpretData(text);
}
ServerSocket::~ServerSocket(){}