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

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

Войти
Регистрация
Восстановить пароль
 
Korbofos
4 / 4 / 0
Регистрация: 15.08.2011
Сообщений: 154
#1

Вызов метода класса из метода другого класса - C++

30.01.2012, 03:01. Просмотров 561. Ответов 8
Метки нет (Все метки)

Помогите школнегу
Имеется несколько классов
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
class Com
{
protected:
unsigned char bufrd[BUFSIZE], bufwr[BUFSIZE];
unsigned char tx_index, rx_index;
public:
void open();
void close();
void write(unsigned char data);
void send();
unsigned char read();
};
 
class Robo
{
protected:
unsigned char l_centr, r_centr, left, right, sensor_data;
public:
void radar_read(unsigned int pos, unsigned int adc);
void radar_write();
void read_sensor(unsigned char data);
void calc ();
void speed();
void synchronization ();
};
Теперь например из класса Robo нужно обратится к Com функции-члену write, из main тоже нужно обратится к write
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
Robo rob;
Com cob;
cob.write(6);
rob.radar_write();
return 0;
}
 
Robo::radar_write()
{
Com cob;
cob.write(10);
}
надо создавать объект класса Com в radar_write если он уже создан в main? Или правельние вызвать так
Robo::radar_write()?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2012, 03:01     Вызов метода класса из метода другого класса
Посмотрите здесь:

Вызов метода другого класса - C++
#include<iostream> using namespace std; class A { public: void Show() { cout << "A" << endl; }; }; class B { ...

Вызов статического метода из другого класса - C++
Добрый день. Есть MAIN.cpp: STDMETHODIMP CMAIN::Function1(VARIANT Data,BYTE* pBuff) { .......... return x; } И...

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

Вызов метода класса - C++
main.cpp: #include "Processor.h" int main() { pr.show(); //здесь пишет ошибку return 0; }

Вызов метода родительского класса - C++
Всем доброго вечера! Читаю Р. Лафоре. Он пишет: Т.е. исходя из этого, можно предположить, что производный класс имеет...

STL вызов метода класса - C++
Доброго времени суток!:) У меня есть класс, в нем поле вектор пар, я хочу реализовать метод вывода этого вектора внутри класса, но что-то...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
30.01.2012, 03:25     Вызов метода класса из метода другого класса #2
Цитата Сообщение от Korbofos Посмотреть сообщение
надо создавать объект класса Com в radar_write если он уже создан в main? Или правельние вызвать так
Robo::radar_write()?
да, надо. если есть необходимость использовать значения из main в radar_write, то правильнее будет передавать как парметр.
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.01.2012, 04:40     Вызов метода класса из метода другого класса #3
Цитата Сообщение от Korbofos Посмотреть сообщение
Robo::radar_write()
Не статический метод таким образом вызвать нельзя.
Korbofos
4 / 4 / 0
Регистрация: 15.08.2011
Сообщений: 154
30.01.2012, 14:07  [ТС]     Вызов метода класса из метода другого класса #4
А массив класса Сом
C++
1
2
protected:
unsigned char bufrd[BUFSIZE], bufwr[BUFSIZE];
Будет каждый раз создаваться новый? или нужно объявить как статик?
И ещё один вопрос
Нужно порезать программу на модули, что бы увидеть увидеть класс Сом из Com.cpp в Robo.cpp. Нужно объявить в Robo.hpp
C++
1
extern class Com
?
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.01.2012, 14:20     Вызов метода класса из метода другого класса #5
Korbofos,
1. Да, если он не объявлен как static, то является индивидуальным для каждого объекта и, следовательно, будет для каждого объекта создан заново. Поэтому если нужно, чтобы он был единым для всех объектов, то следует объявить его как static.
2. Нет. Структура должна быть следующая:
Class.h
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
#ifndef CLASS_H
#define CLASS_H
 
class Class
{
public:
    Class();
    // other constructors
    
    ~Class();
 
    type1 method1(parameters);
    type2 method2(parameters);
    // ...
    typeN methodN(parameters);
 
protected:
    // ...
 
private:
    // ...
};
 
#endif
Class.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
29
30
31
32
#include "Class.h"
 
Class::Class()
{
    // ...
}
 
// Other constructors
 
Class::~Class()
{
    // ...
}
 
type1 Class::method1(parameters)
{
    // ...
}
 
type2 Class::method2(parameters)
{
    // ...
}
 
// ...
 
typeN Class::methodN(parameters)
{
    // ...
}
 
// ...
Файл, где требуется использовать класс Class
C++
1
2
#include "Class.h"
// ...
Korbofos
4 / 4 / 0
Регистрация: 15.08.2011
Сообщений: 154
30.01.2012, 21:21  [ТС]     Вызов метода класса из метода другого класса #6
А чтобы увидеть Class в другом модуле (например Robo.cpp) нужно подключить к нему Class.hpp?
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
31.01.2012, 03:36     Вызов метода класса из метода другого класса #7
Korbofos, да.
Korbofos
4 / 4 / 0
Регистрация: 15.08.2011
Сообщений: 154
31.01.2012, 19:01  [ТС]     Вызов метода класса из метода другого класса #8
C++
1
2
3
4
5
class A
{
void functA();
void functB();
};
Если нужно вызвать functB из functA?
C++
1
2
3
4
5
6
7
8
9
10
11
void A::functA()
{
A ob;
ob.functB();
}
 
int main()
{
A ob;
ob.functA();
}
только так?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2012, 19:22     Вызов метода класса из метода другого класса
Еще ссылки по теме:

Вызов метода класса из main - C++
Как вызвать функцию plus в меин? пробовал вариант р3.=р3.plus(p1,p2), но не получилось #include "stdafx.h" #include <iostream> ...

Вызов метода класса из DLL - C++
Добрый вечер. Имеется длл, в которой есть: 1. Класс, содержащий метод 2. Функция, возвращающая объект этого класса Если п.2...

Вызов метода у наследников абстрактного класса - C++
Добрый вечер. Разбираюсь с паттерном проектирования "Декоратор". Имеется код: #include <string> #include <iostream> #include...

Вызов виртуального метода класса наследника из вектора - C++
#include <iostream> #include <vector> using namespace std; class A { public: virtual void print() { cout << "A" <<...

Вызов метода класса, расположенного в другом файле - C++
У нас есть 2 файла ->Sourse.cpp and Sourse.h /*Sourse.cpp*/ #include "C:\Users\USER\Desktop\define.h" int main() { ...

Вызов переопределенного метода из методов базового класса - C++
Здравствуйте, у меня есть два класса, базовый и производный. В производном классе я переопределяю два метода method1 и method2. В базовом...


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

Или воспользуйтесь поиском по форуму:
Том Ардер
Модератор
Эксперт по математике/физике
3736 / 2349 / 293
Регистрация: 15.06.2009
Сообщений: 4,202
31.01.2012, 19:22     Вызов метода класса из метода другого класса #9
Korbofos,
функциям класса доступны все его переменные и другие функции, поэтому просто так:

C++
1
2
3
4
5
6
void A::functA()
{
  .....
  functB();
  .....
}
Yandex
Объявления
31.01.2012, 19:22     Вызов метода класса из метода другого класса
Ответ Создать тему
Опции темы

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