Доступ к указателю массива в заголовочном файле?

При попытке получить доступ к TCPSocket внутри моего «clientArray» я получаю ошибку нарушения прав доступа. Как бы я получить к нему доступ правильно?

Мой заголовочный файл содержит TCPSocket * clientArray.

public:
TCPsocket *clientArray;
SDLNet_SocketSet aSocketSet;
bool serverOn;

Это определено в моем конструкторе:

clientArray = new TCPsocket[maxsockets];
aSocketSet = SDLNet_AllocSocketSet(maxsockets);

Он доступен в другой моей функции (он работает здесь без проблем):

void ServerSocket::waitingForConnection() {

std::cout << '\r' << flush << "Players connected: " << playersConnected        << ". Listening for connection...  ";
TCPsocket newsocket = SDLNet_TCP_Accept(serverSocket);
SDL_Delay(1000);

if (!newsocket){
//std::cout << '\r' << flush <<  "Listening for connection.  ";
//std::cout << SDLNet_GetError() << std::endl;
}

else{
std::cout << '\r' << flush <<  "Socket (client " << slotnum + 1 << ") created successfully.                           " << std::endl;
clientArray[slotnum] = newsocket;
int n = SDLNet_TCP_AddSocket(aSocketSet, newsocket);

if (n < 0){
std::cout << "Client " << slotnum + 1 << " failed to connect. " << std::endl;
}
else{
char text[10];
std::cout << "Client " << slotnum + 1 << " added to client array successfully." << std::endl;

serverMessage(slotnum, "2 You are successfully connected to the server.");
std::cout << "Sent connection validation to Client " << slotnum + 1 << "." << endl;

std::cout << "Allocating player " << slotnum + 1 << " with player number ." << endl;

serverData(slotnum, '5', slotnum+1);

//ACCESSING IT HERE WITHOUT ISSUE
SDLNet_TCP_Recv(clientArray[slotnum], text, 10);
std::cout << "received text = " << text << endl;
interpretData(text);
slotnum++;
}

//SDLNet_TCP_Close(newsocket);
//SDLNet_TCP_Close(serverSocket);
//code here
}
}

Однако позже, когда я пытаюсь получить к нему доступ через другую функцию, я получаю сообщение об ошибке нарушения прав доступа:

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(){}

В каком направлении я должен идти к решению этой проблемы?

Всего наилучшего

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]