Массив объекта - PullRequest
       12

Массив объекта

0 голосов
/ 08 июля 2011

Мне нужно сделать что-то, что, я думаю, называется Object Array . Например: Игрок получает доступ к серверу, этот сервер выделит этого игрока в качестве объекта такой группы, поэтому будет иметь много объектов одного класса.

Есть ли способ сделать использование одной строки для каждого игрока, но это должно быть редактирование и компиляция исходного кода в реальном времени и без остановки сервера, что невозможно, , но для демонстрации:

Player p0000001 ("Nickname", 150);
Player p0000002 ("OtherNickname", 17);
Player pNNNNNNN ("Nick", 00);

Я хотел что-то вроде:

Player players[0].nickname = "Nickname";
Player players[0].level = 150;
Player players[1].nickname = "OtherNickname";
Player players[1].level = 17;

Возможно это?Мне просто нужно демо для меня, чтобы адаптироваться.Спасибо, Бруно Алано.

Ответы [ 3 ]

1 голос
/ 08 июля 2011

Лучше всего использовать один из контейнеров STL , например std::vector:

#include <vector>

std::vector<Player> players;
players.push_back(Player("Nickname", 150));

Полную ссылку на std::vector можно найти на cplusplus.com .

0 голосов
/ 08 июля 2011

Я не уверен, но я думаю, что вам нужна программа C ++, отслеживающая входной файл. Это правда? Если это так, вам просто нужна программа для чтения каждой новой строки (то есть, пока! Eof). Клиент откроет файл в режиме добавления и добавит строки, когда новые пользователи присоединятся к серверу.

Вы можете найти код здесь:

http://www.dreamincode.net/forums/topic/222664-how-to-read-continuously-refreshed-file-in-c/

Надеюсь, это поможет.

0 голосов
/ 08 июля 2011

Если я вас правильно понял, вы хотите динамически обрабатывать неизвестное количество игроков (то есть вы не можете жестко закодировать его во время компиляции). Это обычно подразумевает динамическое распределение памяти с помощью new / delete. Поскольку вы не знаете, сколько игроков будет, вам следует использовать структуру данных динамического размера, такую ​​как std :: vector или std :: list.

Если вы используете std :: vector / list, попробуйте обрабатывать указатели, а не сами объекты, потому что это вызывает конструкторы копирования, деструкторы и, следовательно, целый ряд ненужных операций для простого хранения этих значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...