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

Передать класс в функцию - C++

Восстановить пароль Регистрация
 
d3vn
2 / 2 / 3
Регистрация: 18.11.2013
Сообщений: 118
29.11.2014, 21:02     Передать класс в функцию #1
Всем привет. Есть следующие файлы с соответствующим содержимым:
Airport.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Runway;
 
class Airport
{
public:
    Airport();
    ~Airport();
    Runway** runway;
    Dispatcher* dispatcher;
    Plane** plane;
    void RunAllObjects();
    void StartModelling(class Runway obj);
 
protected:
private:
    int QuantityOfPlanes;
    int ListOfPlanesAir;
    int ListOfPlanesPort;
    int State;
 
 
};
Runway.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Plane;
 
class Runway
{
public:
    Runway();
    ~Runway();
    Plane** plane;
    bool FreeOrBusy(int State = 1);
protected:
private:
 
    int LineIsBusyTime;
    int BookLine;
};
Airport.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "Airport.h"
#include "Runway.h"
#include <iostream>
 
using namespace std;
 
Airport::Airport()
{
    cout << "Аэропорт создан" << endl;
    RunAllObjects();
}
Airport::~Airport()
{
    cout << "Аэропорт удален" << endl;
}
void Airport::RunAllObjects()
{
    Runway NewRunway;
    Dispatcher NewDispatcher;
    Plane NewPlane;
    Planner NewPlanner;
}
void Airport::StartModelling(Runway NewRunway)
{
    if (NewRunway.FreeOrBusy(State) == true)
        cout << "Полоса свободна" << endl;
    
}
Runway.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "Runway.h"
#include <iostream>
 
using namespace std;
 
 
 
Runway::Runway()
{
    cout << "Взлетная полоса создана" << endl;
}
Runway::~Runway()
{
    cout << "Взлетная полоса удалена" << endl;
}
bool Runway::FreeOrBusy(int State)
{
    if (State == 1)
        return true;
}
Source.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <locale>
#include "windows.h"
#include "Airport.h"
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
 
    Airport NewAirport;
    NewAirport.StartModelling(???);
    Sleep(2000);
 
    system("pause");
    return 0;
}
Проблема в том, что мне в файле Source.cpp нужно вызвать метод экземпляра класса Airport -> NewAirport - Начало моделирования, в которой я использую метод другого класса. В тот метод я передаю класс в его аргументах, что мне кажется "горожением огорода". Подскажите, пожалуйста, что нужно указывать в скобках в NewAirport.StartModelling(???); Или может быть есть какой-то более красивый и правильный способ того, что я хочу сделать? Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
29.11.2014, 23:25     Передать класс в функцию #2
Подскажите, пожалуйста, что нужно указывать в скобках в NewAirport.StartModelling(???)
Ну у тебя же написано
C++
1
void Airport::StartModelling(Runway NewRunway)
ну и передай обьект класса Runway.
C++
1
2
3
 
Runway runway;
NewAirport.StartModelling(runway);
P.S. Это точно вы писали?
d3vn
2 / 2 / 3
Регистрация: 18.11.2013
Сообщений: 118
29.11.2014, 23:36  [ТС]     Передать класс в функцию #3
egor2116, да, я писал, а что?
Вот я и передаю его, но компилятор выдает ошибку, что такого объекта нет.

Добавлено через 1 минуту
egor2116, так как Вы написали:
C++
1
2
Runway runway;
NewAirport.StartModelling(runway);
Мне кажется он запустит, но фишка в том, что я создаю этот объект в отдельной функции в другом файле
DrOffset
6428 / 3802 / 882
Регистрация: 30.01.2014
Сообщений: 6,601
29.11.2014, 23:48     Передать класс в функцию #4
Цитата Сообщение от d3vn Посмотреть сообщение
фишка в том, что я создаю этот объект в отдельной функции в другом файле
В этой RunAllObjects()?

Ну так дело в том, что в этой функции ты объект создал и в этой же функции (в конце) он потом уничтожился. Т.е. на момент, когда создался объект класса Airport объекты классов Runway, Dispatcher, Plane, Planner уже уничтожены. В чем смысл их в ней создавать?
d3vn
2 / 2 / 3
Регистрация: 18.11.2013
Сообщений: 118
30.11.2014, 00:07  [ТС]     Передать класс в функцию #5
DrOffset, Ааа, да, да, да, кстати, когда запускал их еще без Airport.Start..., уничножалось все, кроме аэропорта... почему так? И как это исправить, кроме как создавать все в Source.cpp? Можно ли все равно сделать так, чтобы в Source.cpp я создавал только NewAirport, а он уже за собой тащил создание остальных?
DrOffset
6428 / 3802 / 882
Регистрация: 30.01.2014
Сообщений: 6,601
30.11.2014, 00:20     Передать класс в функцию #6
Цитата Сообщение от d3vn Посмотреть сообщение
почему так?
Потому что ты так написал
Цитата Сообщение от d3vn Посмотреть сообщение
Можно ли все равно сделать так, чтобы в Source.cpp я создавал только NewAirport, а он уже за собой тащил создание остальных?
Они в таком случае должны быть членами класса Airport.
Yandex
Объявления
30.11.2014, 00:20     Передать класс в функцию
Ответ Создать тему
Опции темы

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