Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Доступ к объекту класса

29K
04 мая 2011 года
asupdemon
29 / / 03.10.2008
Всем привет! В h файле объявлено три класса: HeavyCar, Fuller, Emptier.
Это код кнопки ПУСК:
Код:
int i;
//HeavyCar **masCar;
masCar=new HeavyCar *;
qu1=fopen("que1", "wt");
qu2=fopen("que2", "wt");
    for(i=0;i<S;i++)
        masCar=new HeavyCar(i+1);
Fuller fu(masCar);
//Emptier em;
for(i=0;i<S;i++)
    {
    masCar->putFuller(&fu);
    masCar->putEmptier(&em);
    }

Timer3->Enabled=true;


Затем управление передаётся Таймеру:
 
Код:
for (int i=0; i<S; i++)
         masCar->run();
         fu.run();
         em.run();

В обработчике события OnTimer сначала компилятор выдал ошибки, дескать не знаю что такое masCar, em, fu.
Я вынес объявления объектов masCar и em вверх cpp файла и компилятор на них не ругается.
А вот как сделать что бы объект fu был виден в OnTimer у меня никак не получается т.к. ему передаётся в качестве параметра masCar.
Fuller fu(masCar);
Как же сделать что бы fu был виден в OnTimer?
278
04 мая 2011 года
Alexander92
1.1K / / 04.08.2008
Очевидно, точно так же. Вынести его наверх. А еще пойти почитать про области видимости.
29K
04 мая 2011 года
asupdemon
29 / / 03.10.2008
Сделал вот как
 
Код:
Fuller *fu;  //вверху модуля cpp объявил указатель на Fuller



При нажатии на кнопку сработает следующий обработчик:

Код:
int i;
//HeavyCar **masCar;
masCar=new HeavyCar *;
qu1=fopen("que1", "wt");
qu2=fopen("que2", "wt");
    for(i=0;i<S;i++)
        masCar=new HeavyCar(i+1);
//Fuller fu(masCar);
fu = new Fuller(masCar);             //здесь выделяем память под объект fu
                                              //сработает конструктор и ему передаём
                                              //в качестве параметра masCar      
//Emptier em;
for(i=0;i<S;i++)
    {
    masCar->putFuller(fu);
    masCar->putEmptier(&em);
    }
Timer3->Enabled=true;



И в таймере сработает
 
Код:
for (int i=0; i<S; i++)
         masCar->run();
         fu->run();              //т.е. здесь будет вызываться метод run
                                     //класса Fuller
         em.run();


Проверьте пожалуйста, вроде так правильно?
278
04 мая 2011 года
Alexander92
1.1K / / 04.08.2008
Если работает - скорее всего, правильно. :) Сходу ошибок не вижу.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог