Форум программистов, компьютерный форум CyberForum.ru

интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
bolikdimon
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 11:26     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект #1
Привет всем. Необходимо реализовать интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект. Не знаю как правильно описать этот метод в idl-файле.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2011, 11:26     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект
Посмотрите здесь:

C++ Не создается объект
C++ Как возвратить указатель на объект, созданный в методе?
C++ Не создается объект класса
Почему не создается второй объект класса? C++
C++ Создается объект абстрактного класса:(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ghost
Сообщений: n/a
27.02.2011, 12:00     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект #2
Вот пример из ODL файла - практически тот-же IDL
Код
    [
      odl,
      uuid(1F8352C0-50B0-11CF-960C-0080C7F4EE85),
      helpstring('Definition of interface FolderItemVerbs'),
      dual,
      oleautomation
    ]
    interface FolderItemVerbs : IDispatch {
        [id(0x60020000), propget, helpstring('Get count of open folder windows')]
        HRESULT _stdcall Count([out, retval] long* plCount);
        [id(0x60020001), propget, helpstring('Get Application object')]
        HRESULT _stdcall Application([out, retval] IDispatch** ppid);
        [id(0x60020002), propget, helpstring('Get Parent object')]
        HRESULT _stdcall Parent([out, retval] IDispatch** ppid);
        [id(0x60020003), helpstring('Return the specified verb')]
        HRESULT _stdcall Item(
                        [in, optional] VARIANT index, 
                        [out, retval] FolderItemVerb** ppid);
        [id(0xfffffffc), helpstring('Enumerates the figures')]
        HRESULT _stdcall _NewEnum([out, retval] IUnknown** ppunk);
    };
а вот пример из IDL - файла
Код
[
object,
uuid(E205C652-0426-11D2-9A4D-0060081E9D26),
dual,
helpstring('IFPC Interface'),
pointer_default(unique)
]
interface IFPC : IDispatch
{
    [propget, id(1), helpstring('property Arrays')]
    HRESULT Arrays([out, retval] IFPCArrays **pVal);

    [propget, id(2), helpstring('property Enterprise')]
    HRESULT Enterprise([out, retval] IFPCEnterprise **pVal);

    [id(DISPID_REFRESH), helpstring('method Refresh')]
    HRESULT Refresh();

   [propget, id(DISPID_VENDOR_SETS), helpstring('property VendorParametersSets')]
    HRESULT VendorParametersSets([out, retval] IFPCVendorParametersSets **pVal);

   [propget, id(3), helpstring('property Type')]
   HRESULT Type( [out, retval] FpcArrayType* pType);

};
сделай на своем компе поиск с маской *.idl и удивишься результату
bolikdimon
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 12:16  [ТС]     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект #3
RE: Проблема в другом. Если в методе интерфейса используется ссылка на интерфейс из внешней DLL, то какой в этом случае заголовочный файл подключать в idl-файле и как его сформировать?
Ghost
Сообщений: n/a
27.02.2011, 16:26     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект #4
1. oleview поюзай - понравится

2.
import 'oaidl.idl';
import 'ocidl.idl';

ЗЫ. Пиши сразу тот вопрос, который хочешь задать
bolikdimon
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 16:39  [ТС]     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект #5
Дело в том, что oleview я уже юзал. ODL файл полученный с помощью oleview не компилируется в VC. Не могу понять, в чем тут дело.
bolikdimon
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 16:52  [ТС]     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект #6
Почему-то odl-файл полученный в oleview содержит много ошибок. Например вместо скобок {} стоят скобки (), пользовательские типы typedef определяются после интерфейсов, в которых они используются. Но даже после исправления этих ошибок файл не копмилируется. Конечно особой проблемы не составит написать 'ручками' правильный idl, пользуясь oleview и аналогией из других idl-файлов, но хотелось бы знать, в чем тут дело.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2011, 17:48     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект
Еще ссылки по теме:

4 раза в памяти создается объект класса C++
C++ Ссылка на объект класса
Ссылка на временный объект C++

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

Или воспользуйтесь поиском по форуму:
bolikdimon
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 17:48  [ТС]     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект #7
Все. Разобрался. После переустановки VC oleview делает нормальный idl-файл. Видимо был кривой oleview.
Yandex
Объявления
27.02.2011, 17:48     интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект
Ответ Создать тему
Опции темы

Текущее время: 18:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru