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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
bolikdimon
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
#1

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

27.02.2011, 11:26. Просмотров 1190. Ответов 6
Метки нет (Все метки)

Привет всем. Необходимо реализовать интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект. Не знаю как правильно описать этот метод в idl-файле.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2011, 11:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект (C++):

Не создается объект - C++
Есть абстрактный класс от него 2 наследника. В этом классе есть итератор вершин графа template <class Vertex, class Edge> class ABCG { ...

Не создается объект класса - C++
Почему я не могу создать объект класса Zamovlena? Могу создать только указатель. Zamovlena.h #ifndef ZAMOVLENA_H #define ZAMOVLENA_H ...

Создается объект абстрактного класса:( - C++
Вот допустим у меня есть класс: class Cell { public: Cell() {} ~Cell() {} virtual std::string getData() const = 0; }; Ну...

Как возвратить указатель на объект, созданный в методе? - C++
A* B::ReturnPtrA(){ A a; a.Method1(a.Method2()); //... return &a; } Говорит, что нельзя возвращать указатель...

Почему не создается второй объект класса? - C++
#include <string> // Заголовочный файл students.h class students { public: students(std::string user_name, std::string...

Статический объект в статической библиотеке не создается - C++
Есть статическая библиотека. В ней статически создаю синглтон: static Singleton &data = Singleton::getInstance(); Т.к. это глобальный...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ghost
Сообщений: n/a
27.02.2011, 12:00 #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  [ТС] #3
RE: Проблема в другом. Если в методе интерфейса используется ссылка на интерфейс из внешней DLL, то какой в этом случае заголовочный файл подключать в idl-файле и как его сформировать?
Ghost
Сообщений: n/a
27.02.2011, 16:26 #4
1. oleview поюзай - понравится

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

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

4 раза в памяти создается объект класса - C++
Доброго времени суток! Есть следующий код: #include "stdafx.h" #include <iostream> #include <string> using namespace std; ...

Зачем для указателя на объект класса создается отдельный класс - C++
Читаю книгу Джефа Элджера "Библиотека программиста С++", там в главе про умные указатели приводится пример, где для указателя на класс...

Как передавать объект класса в методе main, чтобы конструктор не вызывался 2 раза? - C++
Проблемы заключаются в следующем: есть класс для создания записи и класс для хранения массива этих записей. Так вот, как передавать объект...

Ссылка на временный объект - C++
Наткнулся тут в гугле на одну интересную тему. Как известно, данный код не соответствует стандарту, и не будет скомпилирован многими...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.02.2011, 17:48
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru