AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.03.2008, 18:34   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Вызов метода базового класса
Привет всем!
Необходимо вызвать super(), где целевым является метод через класс выше.
Допустим, есть такая иерархия:
X++:
class A
{
	void foo()
	{
		//....
	}
}

class B extends A
{
	void foo()
	{
		super();
	}
}

class C extends B
{
	void foo()
	{
		super(); // вызвать метод foo() у класса A, не вызывая foo() у класса B
	}
}
Самое простое решение это вместо super() написать, то что лежит в методе A (//...)
Но тут проблемы начнутся, если кто-то изменит базовый класс, то есть то что подразумевает супер не произойдет, пока мы опять не изменим метод foo() класса C

Другой вариант:
X++:
class C extends B
{
 void foo()
 {
	A a;
	;
	a = this;
	a.foo();
   
 }
}
А здесь получается, вместо описания - использование... То есть по сути операции
X++:
   A a;
   ;
   a = this;
   a.foo();
должна использоваться вне класса.
И к тому же, вполне вероятно, что это не сработает. Если считать foo виртуальной функцией, то получаем - вызов a.foo() вызовет C::foo() и как результат - бесконечная рекурсия с переполнением стека.

То есть требуется, что то вроде:
X++:
class C : public B
{
public:
    virtual void foo()
    {
	A::foo();
	//...                
    }
};
Может быть есть какие-нибудь способы обойти класс B?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
вызов метода из таблицы в операторе while select V777 DAX: Программирование 7 23.04.2008 09:11
Вызов класса из другого класса Protey DAX: Программирование 9 26.02.2007 11:01
Вызов метода класса из HTML Chezer DAX: Программирование 2 26.12.2006 15:34
"Программный" вызов метода класса!? axaLearner DAX: Программирование 13 16.08.2005 08:12
вызов класса с передачей параметров simply DAX: Программирование 2 23.06.2004 18:04

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:05.