Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2015, 12:49   #1
Дикутенз
 
Регистрация: 11.08.2015
Сообщений: 3
По умолчанию Как использовать экземпляр класса, созданный в другом файле?

В первом файле я создал класс TGamer и массив объектов этого класса Gamer[4]. Как из другого файла обращаться к этим объектам?
Еще в первом файле у меня есть глобальная переменная num, которая определяет, какой игрок ходит.
Во втором файле с помощью extern num; я использую эту переменную, ошибок не показывается.
Но если с помощью extern Gamer[4];, я объявляю массив, то далее в строчке Gamer[num].Speed = 4; отображается ошибка "Structure required side of . or .*".
Ошибка указывает на место после индекса массива. То есть после Gamer[num
С помощью include я все правильно подключил файл, так как для глобальное переменной num из первого файла не возникает ошибок.
Таким образом возникает вопрос - как использовать экземпляры класса, созданные в других файлах?
Дикутенз вне форума Ответить с цитированием
Старый 11.08.2015, 16:21   #2
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Может лучше так сделать:

Код:
class TGamer
{
public:
    int Speed;
};


class TGame
{

public:
    int GamersCount;
    TGamer *Gamers;

    TGame(int NewGamersCount){
        GamersCount = NewGamersCount;
        Gamers = new TGamer[GamersCount];
        for(int i=0;i<GamersCount;i++){
            Gamers[i].Speed=i;
        }
    }

    ~TGame(){
        delete []Gamers;
    }
};
Пример работы:
Код:
    //  Создаем игру на 10 игроков
    TGame MyGame(10);

    //  Проходимся по всем игрокам и получаем нужные нам данные
    for(int i=0;i<MyGame.GamersCount;i++){
        //  Например: MyGame.Gamers[i].Speed;
    }
Классы TGamer и TGame можно описать в разных файлах.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 11.08.2015 в 16:24.
Krasiosoft вне форума Ответить с цитированием
Старый 01.09.2015, 12:07   #3
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Или сделать как описал Krasiosoft или
объявить массив в первом заголовочном файле файле как:
Код:
extern PACKAGE Gamer Gamers[4];
Работать будет, но ни о каком ООП речи не идет.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экземпляр класса в теле класса. Mr_freeman PHP 4 15.04.2013 15:37
как скопировать экземпляр класса по значению? Fun_tick C# (си шарп) 1 26.07.2012 16:39
как использовать переменную,прописанную в другом юните? lubafffka Общие вопросы Delphi 2 01.05.2012 20:42
Как объявить глобальный экземпляр собственного класса? pastuhdima Помощь студентам 5 16.11.2011 20:16
Экземпляр класса как параметр dzjundzja88 C# (си шарп) 7 17.02.2011 18:33