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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
d3vn
2 / 2 / 3
Регистрация: 18.11.2013
Сообщений: 118
#1

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

29.11.2014, 21:02. Просмотров 429. Ответов 5
Метки нет (Все метки)

Всем привет. Есть следующие файлы с соответствующим содержимым:
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(???); Или может быть есть какой-то более красивый и правильный способ того, что я хочу сделать? Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2014, 21:02     Передать класс в функцию
Посмотрите здесь:

передать массив структуры в класс C++
Создайте класс Date. Добавить в строковый класс функцию C++
C++ Написать функцию, которая могла бы передать значение в другую функцию
C++ Как передать в функцию двумерный массив указателей на класс?
Как передать указатель на функцию в функцию C++
C++ Как передать ссылку на объект в класс
Как передать функцию в функцию? C++
C++ Объясните, зачем класс мог бы предусматривать для элемента данных set-функцию и get-функцию
Не могу передать функцию в функцию C++
Передать переменную из класса в класс C++
В функцию с переменным числом параметроы передать указатели на функцию C++
Не могу разобраться как передать корректно передать массив из функции в функцию C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,113
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
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
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
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
30.11.2014, 00:20     Передать класс в функцию #6
Цитата Сообщение от d3vn Посмотреть сообщение
почему так?
Потому что ты так написал
Цитата Сообщение от d3vn Посмотреть сообщение
Можно ли все равно сделать так, чтобы в Source.cpp я создавал только NewAirport, а он уже за собой тащил создание остальных?
Они в таком случае должны быть членами класса Airport.
Yandex
Объявления
30.11.2014, 00:20     Передать класс в функцию
Ответ Создать тему
Опции темы

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