Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 22.07.2010
Сообщений: 141
1

Можно ли так вызвать метод?

19.07.2012, 23:54. Просмотров 549. Ответов 9
Метки нет (Все метки)

Всем доброго времени суток!

Вот такая ситуация.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A {
void fun();
};
 
class B {
A a;
};
 
/*и отдельно живущий класс C из коготорого нужно магическим способом вызвать a->fun1();*/
class C {
void fun2();
};
void C::fun2() {
    a->fun1();
}
Возможно ли что-то подобно?
Или как мне сообщить из класса С в класс В чтоб в классе В вызвать а->fun1();

Надеюсь я понятно изложил суть проблемы.
Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2012, 23:54
Ответы с готовыми решениями:

Можно ли вручную вызвать метод main()
у меня в книге по C++ написано, что метод main() является зарезервированным системой и что его...

Как вызвать подпрограмму так, чтобы можно было считать её вывод?
Здравствуйте, господа! Нужно составить скрипт для кода, написанного на Си. По заданию, нужно...

Определить функцию-член в наследнике так, чтобы её можно было вызвать только по ссылке на базовый класс
Пусть дан абстрактный класс A class A { public: void virtual method() const = 0; }; ...

Можно ли из программы вызвать метод main()?
Прошу помощи! Ситуация следующая: я разрабатываю на Java под Android, в C не очень разбираюсь. Есть...

9
425 / 426 / 93
Регистрация: 16.07.2012
Сообщений: 886
19.07.2012, 23:57 2
Так сделайте в классе B функцию которая бы вызывала a->fun1() и в классе C вызовете эту новую функцию
1
Каратель
Эксперт С++
6593 / 4014 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.07.2012, 23:59 3
C++
1
2
3
4
void C::fun2(B* a) 
{
    a->fun1();
}
1
554 / 508 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
20.07.2012, 00:07 4
Цитата Сообщение от amatorIP Посмотреть сообщение
C++
1
2
3
4
5
6
7
/*и отдельно живущий класс C из коготорого нужно магическим способом вызвать a->fun1();*/
class C {
void fun2();
};
void C::fun2() {
    a->fun1();
}
изложил непонятно. что такое "a" в ф-ии C::fun2()? где эта штука создана?
0
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2012, 03:37 5
изложил непонятно. что такое "a" в ф-ии C::fun2()? где эта штука создана?
Здесь.
Цитата Сообщение от amatorIP Посмотреть сообщение
C++
1
2
3
class B {
A a;
};
0
26 / 21 / 2
Регистрация: 14.07.2012
Сообщений: 176
20.07.2012, 12:18 6
Хм, вроде бы данные в классе дефолтно находятся в private.
0
554 / 508 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
22.07.2012, 00:14 7
Цитата Сообщение от alsav22 Посмотреть сообщение
Здесь.
что - "здесь"? в классе C нет ничего, кто называлось бы "a"
0
Модератор
Эксперт по электронике
8231 / 6098 / 814
Регистрация: 14.02.2011
Сообщений: 21,181
22.07.2012, 00:39 8
Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
3
4
void C::fun2(B* a) 
{
 a->fun1();
}
По моему ты не прав
B ведь не потомок A
он содержит объект A
Цитата Сообщение от amatorIP Посмотреть сообщение
C++
1
2
3
class B {
A a;
};
так что так
C++
1
2
3
4
void C::fun2(B* a) 
{
 a->a.fun1();
}
чтобы меньше путаницы
C++
1
2
3
4
void C::fun2(B* b) 
{
 b->a.fun1();
}
ну и чтобы не усложнять то так
C++
1
2
3
4
void C::fun2(A* a) 
{
 a->a.fun1();
}
Добавлено через 12 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
ну и чтобы не усложнять то так
C++
1
2
3
4
void C::fun2(A* a) 
{
 a->a.fun1();
}
пардон наврал
вот так
C++
1
2
3
4
void C::fun2(A* a) 
{
 a->fun1();
}
0
193 / 173 / 30
Регистрация: 10.07.2012
Сообщений: 799
22.07.2012, 20:50 9
признаться честно, вся проблема в том, чтобы правильно воспользоваться тем, что в народе называется инкапсуляция...
0
бжни
2467 / 1676 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
23.07.2012, 00:07 10
вот делегат тебе

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
#include <functional>
#include <iostream>
 
class A {
public:
   A (int a) : m_a(a) {}
   int fun() { return m_a; }
private: 
   int m_a;  
};
 
class B {
public:
   B (std::function<int()>& fun) : m_fun(fun) {}
   int fun() { return m_fun(); }
private:
   std::function<int()>& m_fun; 
};
 
int main() {
   A a(10); 
   std::function<int()> f = std::bind(&A::fun, &a);
   B b(f);
   std::cout << b.fun() << std::endl;  
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2012, 00:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Можно ли вызвать метод одного объекта через метод другого объекта?
Мне нужно сделать так, чтобы при вызове метода OnMouseDown() Первого объекта вызывался метод...

Java Swing - можно ли вызвать метод в методе?
Здравствуйте. Недавно начал изучать java и работаю c Swing. В данном случае практиковался делать...

Можно ли из программы вызвать метод Access - DBEngine.CompactDatabase
Нужно както оптимизировать файл базы данных, но для этого приходится пользоваться Access. Хотелось...

Можно ли вызвать метод (послать сообщение) аплету из др. аплета
Здравствуйте знатоки, вопрос в том что апплеты вызывающий и принимающий находятся в различных...


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

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

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