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

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

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

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

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

Как передать в функцию двумерный массив указателей на класс? - C++
у меня есть std::vector&lt;Monster*&gt; monsters; Rect *pole; int pacmen_distance; Monster и Rect два...

Не могу разобраться как передать корректно передать массив из функции в функцию - C++
//--------------------------------------------------------------------------- #pragma hdrstop ...

Написать функцию, которая могла бы передать значение в другую функцию - C++
как сделать функцию которая бы могла передать значеие в другую функцию ну к примеру a=4*b; где b=sin(fi);

В функцию с переменным числом параметроы передать указатели на функцию - C++
Добрый вечер. По заданию нужно в функцию с переменным числом параметров передать имя функций, которые нужно вызвать. Долго думала,как имея...

Как передать указатель на функцию в функцию - C++
И как с ней работать?

Создайте класс Date. Добавить в строковый класс функцию - C++
3)Создайте класс Date, который будет содержать информацию о дате (день, месяц, год). С помощью механизма перегрузки операторов, определите...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
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. Это точно вы писали?
0
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);
Мне кажется он запустит, но фишка в том, что я создаю этот объект в отдельной функции в другом файле
0
DrOffset
7152 / 4293 / 968
Регистрация: 30.01.2014
Сообщений: 7,093
29.11.2014, 23:48 #4
Цитата Сообщение от d3vn Посмотреть сообщение
фишка в том, что я создаю этот объект в отдельной функции в другом файле
В этой RunAllObjects()?

Ну так дело в том, что в этой функции ты объект создал и в этой же функции (в конце) он потом уничтожился. Т.е. на момент, когда создался объект класса Airport объекты классов Runway, Dispatcher, Plane, Planner уже уничтожены. В чем смысл их в ней создавать?
1
d3vn
2 / 2 / 3
Регистрация: 18.11.2013
Сообщений: 118
30.11.2014, 00:07  [ТС] #5
DrOffset, Ааа, да, да, да, кстати, когда запускал их еще без Airport.Start..., уничножалось все, кроме аэропорта... почему так? И как это исправить, кроме как создавать все в Source.cpp? Можно ли все равно сделать так, чтобы в Source.cpp я создавал только NewAirport, а он уже за собой тащил создание остальных?
0
DrOffset
7152 / 4293 / 968
Регистрация: 30.01.2014
Сообщений: 7,093
30.11.2014, 00:20 #6
Цитата Сообщение от d3vn Посмотреть сообщение
почему так?
Потому что ты так написал
Цитата Сообщение от d3vn Посмотреть сообщение
Можно ли все равно сделать так, чтобы в Source.cpp я создавал только NewAirport, а он уже за собой тащил создание остальных?
Они в таком случае должны быть членами класса Airport.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2014, 00:20
Привет! Вот еще темы с ответами:

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

Не могу передать функцию в функцию - C++
в строке 39 пишет, необъявленный индетификатор (number), почему, что я сделал не так? смысл рекурсивной функции, сначала она выполняет...

Как передать функцию в функцию? - C++
void MainWindow::_createTextEdit(QWidget *tab, QString text, void (*saveSlot)()) { ... connect(save, SIGNAL(clicked()), this,...

Передать в DLL указатель на класс - C++
В основной программе хочю сделать чтото типа class fprognoz { public: double End_chen; int rezult; __int64 ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.11.2014, 00:20
Ответ Создать тему
Опции темы

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