Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вызов функции класа из внутреннего.. 
:(
    Опции темы
Step
Дата 7.2.2003, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



у меня есть два класса
Код
class in2
{
public: a();
.........
}

class n
{

public: b();
in2 ex;
.........
}

как мне из функции а первого класа вызвать функцию b второго класса


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
stab
Дата 7.2.2003, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: нет
Всего: 48



нужен объект класса n или если метод класса n не привязан к экземплярам класса то метод b можно сделать методом класса (статический метод), т.е.

public:
static b();

и вызавать как n::b();

Это сообщение отредактировал(а) cully - 7.2.2003, 22:20


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Step
Дата 8.2.2003, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Цитата
static b();
не так не пойдет не тот случай. функция не может быть статик, покрайней мере эта


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
dim
Дата 8.2.2003, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Если брать конкретный пример без изменений, то приходит на ум такое извращение:

void n::b()
{
DWORD object = (DWORD)&ex;
__asm {
mov ecx,object
call in2::a
}
}
--------------------
that's all
PM MAIL   Вверх
Step
Дата 8.2.2003, 04:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Цитата
call in2::a
ты не понял, мне нужно из а вызвать б


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
dim
Дата 8.2.2003, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Сори, я чето совсем smile.gif
Код

void in2::a()
{
DWORD object = (DWORD)this;
__asm {
 mov ecx,object
 call n::b
}
}

--------------------
that's all
PM MAIL   Вверх
HexoGen(i)us
Дата 9.2.2003, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.2.2003

Репутация: нет
Всего: нет



Через асм!!!!!!!
А на машинных кодах слабо?
smile.gif
Пусть лучше поймет для чего this нужен ...
Если разберется с этим мусором то ему понятнее будет зачем в каждый объект передается указатель на родительский smile.gif

class n;
class ins;

class ins
{
public:
void a(n * nP, int iVala);
};

class n
{
public:
int iTr;
void b(int iValb);
ins ex;
};
void ins::a(n * nP, int iVala)
{
nP->b(iVala);
}
void n::b(int iValb)
{
ShowMessage(iValb+iTr);
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
n trabla,trabla2;
trabla.iTr=7;
trabla2.iTr=2;
trabla.ex.a(&trabla, 5);
trabla2.ex.a(&trabla2, 5);
}

// Обрати внимание на TObject *Sender это примерно то же самое что сделал я но в более глобальных масштабах...
PM MAIL   Вверх
Nastya
Дата 9.2.2003, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 5
Всего: 44



Объявить один класс как дружественный к другому.

В том классе к которому обращаются написать.
friend class имя_класса_который_обращается.

Если я правильно поняла


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Step
Дата 10.2.2003, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Товарищи все большое спасибо, я сделал как оказалось основная проблема заключалась в том что классы были описанны в разных файлах и я не правильно их подключал.
Еще раз всех благодарю за помощь.


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.5456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.