Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Пушкин
1 / 1 / 0
Регистрация: 26.10.2010
Сообщений: 8
27.10.2010, 17:01     Разные экземпляры класса ? #1
Есть класс 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(...) работала с уже существующим экземпляром, а не создавала новый ? Вроде как это решается поинтерами, но я не уверен, да и не дошел до них.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2010, 17:01     Разные экземпляры класса ?
Посмотрите здесь:

C++ Как переопределить функцию так, чтобы она не только могла принимать разные параметры, но и возвращать тоже разные?
Отсутствуют экземпляры конструктора C++
C++ Статический и динамический экземпляры класса
C++ как лучше сделать хранение ссылок на экземпляры класса?
C++ Вывод контейнера указателей на экземпляры абстрактного класса
Swap для элементов контейнера указателей на экземпляры абстрактного класса C++
Почему все экземпляры класса в векторе имеют абсолютно одни и те же характеристики? C++
C++ Построить отрезок между двумя точками, определенными как экземпляры класса Point

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
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 / 0
Регистрация: 26.10.2010
Сообщений: 8
27.10.2010, 17:24  [ТС]     Разные экземпляры класса ? #3
Я до этого год яву изучал, а там с этим попроще, щас попробую переписать

Добавлено через 2 минуты
Работает, огромное спасибо )
Yandex
Объявления
27.10.2010, 17:24     Разные экземпляры класса ?
Ответ Создать тему
Опции темы

Текущее время: 02:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru