2014-09-16 3 views
0

В настоящее время я изменяю видеоигру, и у меня возникают проблемы с клиентами. Их 18 клиентов в игре. Каждый клиент в основном является номером. Итак, клиент 4 = 4 клиент 16 = 16 и т. Д. Так что скажем, идет ли клиент в меню и нажимает на FlyMode. Номер ClientIndex сохранит номер в массиве. Вот мой класс клиентов.C++ Как передать переменную через класс с индексом массива?

class Client{ 
public: 
    void FlyMode(int Client) { *(int*)(GetEntity(Client) + 0xB4); }; 
}; 

Вместо того, чтобы иметь int Client как параметр, я хочу передать переменную, чтобы указать номер клиента. Я хочу, чтобы это можно было вызвать FlyMode. Client[ID].FlyMode(); Вместо Client[ID].FlyMode(ClientID); я также хочу, чтобы попытаться избежать havint Client Clients[18];

+0

Используйте «unordered_map» с ключом идентификатора клиента и значением объекта «Клиент». – 101010

+0

Можете ли вы объяснить больше? Я не понимаю, что вы пытаетесь сказать. – Warfighter8888

+0

Он означает [** один из этих **] (http://en.cppreference.com/w/cpp/container/unordered_map). Посмотрите на методы для примеров того, как они используются. – WhozCraig

ответ

0

Вы могли бы иметь данные члена в Client который улавливает ID клиента и использовать его в FlyMode.

class Client{ 
    int ID_; 
public: 
    Client(int ID) : ID_(ID) {} 
    void FlyMode() { *(int*)(GetEntity(this->ID_) + 0xB4); }; 
}; 
+0

YEESSS что-то вроде этого. Я вижу, вы полностью понимаете мой вопрос. НО мне нужно это в массиве, поэтому я могу делать такие вещи, как сказать, если бы у нас был bool InMenu; в классе я не смог бы получить доступ к нему, если бы у меня его не было в массиве. – Warfighter8888

+0

Мне непонятно, что ищет массив. Возможно, вы можете обновить свой пост, чтобы четко описать все ваши вопросы. –

+0

Ты на месте. Это именно то, что мне нужно, но возможно ли иметь число клиентов, хранящихся в массиве? – Warfighter8888

0

Вы могли бы реализовать свою собственную коллекцию обертку над массивом и перегрузки оператора [] таким образом, что бы сказать, ваши объекты, идентификаторы он имеет. Sth вдоль линий этого

class MyContainer 
{ 
public: 
    Client & operator[](int i) { mClients[i].setId(i); return mClients[i]; } 
private: 
    Client mClients[18]; 
} 

Конечно, вы бы, вероятно, хотели бы реализовать его в надлежащем порядке (проверка диапазона?), Приведенный выше код просто, чтобы выразить идею.

Смежные вопросы