Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 26.10.2010
Сообщений: 8
1

Разные экземпляры класса ?

27.10.2010, 17:01. Показов 881. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть класс Visitor и в нем объявленна функция

C++
1
2
3
4
5
6
7
8
9
10
11
void visitor:: enterToPark(jurassicPark jp){
    //Trying to enter to park at every random 10 seconds if he isn't in park
    if (isInsidePark != true) {
        //cout << randomTime << endl;
        if ((int)t.elapsedTime() == randomTime) {
            jp.addNewVisitor();
            isInsidePark = true;
            cout << jp.showNumInPark();         
        }
    }
}
ну и в функции мэйн

C++
1
2
3
4
5
6
7
8
9
void main() {
    mytimer t;
    jurassicPark jp;
    visitor v;  
    while(1) {
        v.enterToPark(jp);
        cout << jp.showNumInPark();
    }
}
Я так понял, что функция enterToPark класса Visitor принимая параметр jurassicPark, создает новый экземпляр jurassicPark, а не изменяет уже заданный в мэйне ?

по сути переменная jp из мэйна после выполнения действия должна увеличить счетчик с нуля до еденицы, а он так и остается на нуле. Зато когда я вызываю jp.showNumInPark() из функции enterToPark(...), здесь все работает как положенно. Подскажие как это исправить ? Чтобы функция v.enterToPark(...) работала с уже существующим экземпляром, а не создавала новый ? Вроде как это решается поинтерами, но я не уверен, да и не дошел до них.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2010, 17:01
Ответы с готовыми решениями:

Статический и динамический экземпляры класса
В чем разница между статическим и динамическим экземплярами класса? Мои познания здесь скромны:...

Как перебрать все экземпляры класса?
Здравствуйте! Я начинающий программист..... может и не программист вовсе. Но мне необходимо сделать...

Вывод контейнера указателей на экземпляры абстрактного класса
Добрый день. Задача требует описать абстрактный класс и несколько наследников этого класса....

Как лучше сделать хранение ссылок на экземпляры класса?
есть необходимость зранить все созданные экземпляры класса придумал сдделать это с помощью...

2
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
27.10.2010, 17:19 2
Цитата Сообщение от Пушкин Посмотреть сообщение
Я так понял, что функция enterToPark класса Visitor принимая параметр jurassicPark, создает новый экземпляр jurassicPark, а не изменяет уже заданный в мэйне ?
Ты правильно понял, при передаче функции enterToPark параметра типа jurassicPark создается локальная копия объекта jp, которая уничтожается после выполнения функции. Переданный объект функция не изменяет. Чтобы функция могла модифицировать переданный ей объект, нужно, чтобы объект передавался не по значению, а по ссылке. Для этого измени прототип функции на такой:
C++
1
void visitor:: enterToPark(jurassicPark& jp)
Можно и с помощью указателей:
C++
1
2
3
4
5
6
7
8
9
10
11
void visitor:: enterToPark(jurassicPark* jp){
        //Trying to enter to park at every random 10 seconds if he isn't in park
        if (isInsidePark != true) {
                //cout << randomTime << endl;
                if ((int)t.elapsedTime() == randomTime) {
                        jp->addNewVisitor();
                        isInsidePark = true;
                        cout << jp->showNumInPark();                     
                }
        }
}
Цитата Сообщение от Пушкин Посмотреть сообщение
Вроде как это решается поинтерами, но я не уверен, да и не дошел до них.
Странно, обычно указатели изучаются раньше классов...
1
1 / 1 / 0
Регистрация: 26.10.2010
Сообщений: 8
27.10.2010, 17:24  [ТС] 3
Я до этого год яву изучал, а там с этим попроще, щас попробую переписать

Добавлено через 2 минуты
Работает, огромное спасибо )
0
27.10.2010, 17:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2010, 17:24
Помогаю со студенческими работами здесь

Swap для элементов контейнера указателей на экземпляры абстрактного класса
Добрый вечер. Не могу осилить проблему: Описан абстрактный класс. Описаны наследники этого...

Сравнение двух строк (экземпляры класса string ) задействуя метод compare
Здравствуйте, мне необходимо сравнить два экземпляра класса string, один из экземпляров вводится с...

Почему все экземпляры класса в векторе имеют абсолютно одни и те же характеристики?
Доброе время суток! Суть: Есть класс, в конструкторе которого некоторые переменные класса...

Не удаётся добавить в вектор объектов экземпляры класса (нет подходящего конструктора по умолчанию)
Здравствуйте! Столкнулся со следующей проблемой. Мне нужно создать вектор, который содержит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru