Текущее время: Пт, июл 18 2025, 09:48

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Вызов метода
СообщениеДобавлено: Ср, авг 17 2011, 11:51 
Начинающий
Начинающий

Зарегистрирован:
Чт, апр 02 2009, 22:32
Сообщения: 16
Имеем два класса.
Пытаюсь вызвать метод второго класса из метода первого.
Получаю ошибку "Method "C2_M1" is unknown or PROTECTED or PRIVATE."
Что я делаю не так?

Code:
CLASS C2 DEFINITION DEFFERED.

**************************

CLASS C1 DEFINITION.
  data:
    obj_class2 type ref to C2.

  METHODS C1_M1.
ENDCLASS.

CLASS C1 IMPLEMENTATION.
  METHOD C1_M1.
    me->obj_class2->C2_M1    <----------------- почему ругается "Method "C2_M1" is unknown or PROTECTED or PRIVATE."
  ENDMETHOD.
ENDCLASS.

***************************

CLASS C2 DEFINITION.
  METHODS C2_M1.
ENDCLASS.

CLASS C2 IMPLEMENTATION.
  METHOD C2_M1.
     ............
  ENDMETHOD.
ENDCLASS.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов метода
СообщениеДобавлено: Ср, авг 17 2011, 12:09 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Метод C2_M1 должен быть объявлен в PUBLIC SECTION класса, т.к вы обращаетесь к нему не из самого класса или его потомка.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов метода
СообщениеДобавлено: Ср, авг 17 2011, 13:22 
Начинающий
Начинающий

Зарегистрирован:
Чт, апр 02 2009, 22:32
Сообщения: 16
Rokhay написал:
Метод C2_M1 должен быть объявлен в PUBLIC SECTION класса.....


Да, забыл в примере кода указать, естественно он объявлен в PUBLIC.

Нашел решение через динамический вызов метода

вместо me->obj_class2->C2_M1
вызываем так call method me->obj_class2->('C2_M1')

Но почему-то мне так не очень нравится. Зачем здесь динамически если имя метода известно заранее.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов метода
СообщениеДобавлено: Ср, авг 17 2011, 13:29 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Поместите определение обоих классов до реализации первого класса:
Code:
CLASS c1 DEFINITION.
..
CLASS c2 DEFINITION.
...
CLASS c1 IMPLEMENTATION.
...
CLASS c2 IMPLEMENTATION.
...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов метода
СообщениеДобавлено: Ср, авг 17 2011, 13:46 
Начинающий
Начинающий

Зарегистрирован:
Чт, апр 02 2009, 22:32
Сообщения: 16
Rokhay написал:
Поместите определение обоих классов до реализации первого класса


Спасибо, это помогло.

Я почему-то думал что строка CLASS C2 DEFINITION DEFFERED должна помочь в данной проблеме, но нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов метода
СообщениеДобавлено: Ср, авг 17 2011, 14:27 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
ibragim написал(а):
Rokhay написал:
Поместите определение обоих классов до реализации первого класса


Спасибо, это помогло.

Я почему-то думал что строка CLASS C2 DEFINITION DEFFERED должна помочь в данной проблеме, но нет.

Цитата:
The variant CLASS class DEFINITION DEFERRED only indicates that the class occurs in the same context so that the system does not look in a higher-level context. Full use of the class, for example, access to its components or generation of objects, is then only possible after the definition of the class.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB