Поиск:

Ответ в темуСоздание новой темы Создание опроса
> __closure на константный метод, Как специализировать? 
:(
    Опции темы
np9mi7
  Дата 18.7.2005, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

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



ДОбрый день.

В Borland Builder c++ есть такое расширение языка как: __closure;
В справке по этому поводу есть что-то вроде:
Код

class base

{
  public:
    void func(int x) { };
};
typedef void (base::* pBaseMember)(int);
int main(int argc, char* argv[])
{
  base        baseObject;
  pBaseMember m = &base::func; // Get pointer to member 'func'
  // Call 'func' through the pointer to member
  (baseObject.*m)(17);
  return 0;
}

int main(int argc, char* argv[])

{
  derived         derivedObject;
  void (__closure *derivedClosure)(int);
     derivedClosure = derivedObject.new_func; // Get a pointer to the 'new_func' member.
                                              // Note the closure is associated with the
                                              // particular object, 'derivedObject'.
     derivedClosure(3);  // Call 'new_func' through the closure.
     return 0;
}


Но ничего не сказанно про __closure на константный метод объекта. Ходят слухи что данная IDE страдает отсутствием полноты справки, и поэтому хотел спросить у Вас: как объявить __closure на const метод объекта?

Заранее благодарен за помощь.


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Vyacheslav
Дата 18.7.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Во-первых, Borland изначально славился поставкой хорошей документации.
А во вторых, константыный метод - это своего рода лишь подпорка для программиста, контролирующая его действия на этапе компиляции. Во-всем остальном это практически это обычный метод
Код

typedef void (__closure  *TMyEvent )(TObject*);

class TForm1 : public TForm
{
__published:    // IDE-managed Components
private:    // User declarations
public:        // User declarations
    __fastcall TForm1(TComponent* Owner);
    TMyEvent MyEvent;
    void Test(TObject*) const;

};


....

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    MyEvent = Test;
}




--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
np9mi7
  Дата 19.7.2005, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

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



Цитата
Во-первых, Borland изначально славился поставкой хорошей документации.
, ну спорить не буду, но некоторые вещи (например тип Variant), у них мягко скажем плохо описаны.

Причиной этого вопроса стала вот такая ошибка:

Цитата
[C++ Error] gaccesscontrol.cpp(39): E2285 Could not find a match for 'icase::CAbstractCommand::RegisterObserver<T>(TAccessControl * const,void (_fastcall * (_closure )(TService *,bool &) const)(TService *,bool &))'


что значит выделенный const?


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Vyacheslav
Дата 19.7.2005, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Дайте код, который Вы используете. Может проблемы в темплате -функции
И кстати о const. Что Вы имели в виду, когда использовали в качестве арнумента функции тип TAccessControl * const?
Если то, что значение указатетеля не должно изменяться, то оно и так не будет изменяться.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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