0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 41
1

Вызов функции класса из другого файла.(Модель компиляции)

15.10.2015, 03:02. Показов 5435. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Пишу движек игры, написал большую часто кода по которой задумывалось примерно то что тут ниже.

не могу понять как вызвать функцию класса из другого файла. Спомощью другой функции но при условии что эта функция ничего не может принимать в качестве параметра.

Собственно вот тут весь листинг, вызов должен происходить из файла three.cpp

очень надо решение.

header.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
class myclass {
    int a, b;
public:
    myclass (int n);        
    void set(int );
    void show();    
    };
    
#include "two.cpp"  
#include "three.cpp"

one.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
#include "header.h"
 
myclass *ob;
void run(void);
 
int main() {
  
    myclass *ob = new myclass(1);
            ob->set(5);
    
    run();
    
    return 0;
}

two.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
    myclass::myclass(int n) 
    {
        a = n;
    }
    
    void myclass::set(int m) 
    {
        b = m;
    }
    
    void myclass::show() 
    {
        cout << a << endl;
    }

three.cpp
C++
1
2
3
4
5
6
7
#include <iostream>
using namespace std;
 
void run(void)
{
    ob->show();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2015, 03:02
Ответы с готовыми решениями:

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

Вызов функции из другого класса
Добрый день, пишу в qt. Столкнулся с проблемой вызова функции в другом классе. Все бы ничего, но...

Вызов функции одного класса из другого
В классе Form1 вызывается открытие окна Zoom, а в классе Zoom по кнопке нужно вызвать перерисовку...

Вызов функции из другого класса делегатом
Здравствуйте. Имеются два скрипта: Script 1 public Action&lt;float, float&gt; ImgPosChanged =...

2
Модератор
Эксперт С++
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,699
15.10.2015, 08:00 2
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
#include "header.h"
extern myclass *ob; 
void run(void)
{
    ob->show();
}
Кстати, эту строчку
extern myclass *ob;
можно добавить в header.h
1
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
15.10.2015, 11:06 3
  1. Ты совершенно не правильно используешь разбиение на файлы, в *.h описывается и инклудится минимум необходимого. В *.cpp инклудятся необходимые для реализации библиотеки. Не стоит в заголовочных файлах использовать using namespace. Обрати внимание на #ifndef в моих примерах заголовочных файлов. Для класса принято создавать два файл (myclass.h, myclas.cpp).
  2. Тебе потребовался ob как глобальные объект. Смотри как это делается через extern, но: "Глобальные объекты считаются не только дурным тоном, но и признаком необходимости пересмотра структуры программы."
  3. В твоём случае: ob и run описывают конкретный объект: Игра. И не смотря на то, что в программе будет использоваться только один такой объект, его можно описать как класс.

myclass.h:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef __MY_CLASS_H__
#define __MY_CLASS_H__
 
class myclass {
  int a, b;
public:
  myclass (int n);        
  void set(int );
  void show();    
};
 
#endif // __MY_CLASS_H__

myclass.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
#include "myclass.h"
 
using namespace std;
 
myclass::myclass(int n)
  : a(n), b(0)
{ }
    
void myclass::set(int m) 
{
  b = m;
}
    
void myclass::show() 
{
  cout << a << endl;
}

game.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef __GAME_H__
#define __GAME_H__
 
#include "myclass.h"
 
class Game {
public:
  Game();
  void run();
private:
  myclass ob_;
};
 
#endif // __GAME_H__
game.cpp:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "game.h"
 
Game::Game()
  : ob_(1)
{
  ob_.set(5);
}
 
void Game::run()
{
  ob_.show();
}


main.cpp:
C++
1
2
3
4
5
6
7
8
9
#include "game.h"
 
int main()
{
  Game * game = new Game();
  game->run();
  delete game;
  return 0;
}
1
15.10.2015, 11:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2015, 11:06
Помогаю со студенческими работами здесь

Вызов функции другого класса, принимаемой в аргументе
помогите, пожалуйста, как реализовывать правильно такое(и возможно ли?) в классе...

Вызов функции public function из другого класса
Есть спрайт, который связан с классом. Этот класс &quot;видит&quot; другие объекты в этом спрайте и к ним...

Вызов класса из другого файла при нажатии на jbutton
Есть jbutton, есть класс, находящийся в другом файле, но в одном package Как сделать выполнение...

Вызов функции другого класса, в котором есть переменные текущего
Есть форма (Ф), на ней есть листы с данными, листбокс и таймер, а так же функция, которая...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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