Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7

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

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

Студворк — интернет-сервис помощи студентам
Привет всем. Необходимо реализовать интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект. Не знаю как правильно описать этот метод в idl-файле.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2011, 11:26
Ответы с готовыми решениями:

Если возвращается переменная ссылочного типа, то возвращается объект или просто ссылка
Почему-то авторы всегда акцентируют внимание на передачу параметров в функцию, а на возврат не очень: using System; using...

Не создаётся ссылка на временный объект
Что же делать? Код: #include <iostream> using namespace std; class BigClass { public:

При присваивании объекта создаётся ссылка на объект, НО
Доброго. На официальном сайте сказано: То есть присваивается ссылка на объект ... Почему же тогда в следующем коде такой...

6
Ghost
27.02.2011, 12:00
Вот пример из ODL файла - практически тот-же IDL
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    [
      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 - файла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[
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 и удивишься результату
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 12:16  [ТС]
RE: Проблема в другом. Если в методе интерфейса используется ссылка на интерфейс из внешней DLL, то какой в этом случае заголовочный файл подключать в idl-файле и как его сформировать?
0
Ghost
27.02.2011, 16:26
1. oleview поюзай - понравится

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

ЗЫ. Пиши сразу тот вопрос, который хочешь задать
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 16:39  [ТС]
Дело в том, что oleview я уже юзал. ODL файл полученный с помощью oleview не компилируется в VC. Не могу понять, в чем тут дело.
0
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 16:52  [ТС]
Почему-то odl-файл полученный в oleview содержит много ошибок. Например вместо скобок {} стоят скобки (), пользовательские типы typedef определяются после интерфейсов, в которых они используются. Но даже после исправления этих ошибок файл не копмилируется. Конечно особой проблемы не составит написать 'ручками' правильный idl, пользуясь oleview и аналогией из других idl-файлов, но хотелось бы знать, в чем тут дело.
0
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 17:48  [ТС]
Все. Разобрался. После переустановки VC oleview делает нормальный idl-файл. Видимо был кривой oleview.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2011, 17:48
Помогаю со студенческими работами здесь

Как в методе создать объект типа?
Как в методе GetById создать объект типа ZipCodeModel. Такой вопрос спросить? КОД! public class ZipCodeModel { ...

Как преобразовать ссылку на объект в указатель на этот объект?
Как преобразовать ссылку на объект в указатель на этот объект? Буду благодарен за помощь.

Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу?
Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу? Т.е. не меняя саму ссылку, изменить тип объекта, на...

Проблема с массивами + System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объект
Ошибка выскакивает на atsakymai = new string; В первой форме //ФОРМА 2: public partial class Form2 : Form { ...

Если объект добавлять в 2 контейнера, то в них будет ссылка или новый объект?
Есть объект - obj. Последовательно добавляю его в два контейнера container1.add(obj); container2.add(obj); Если я удалю...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru