IDL в ATL/COM: можно ли опубликовать константу сложного типа?

Я знаю, как опубликовать константу простого типа в IDL, например:

const long blah = 37

Но я хочу публиковать константы сложных типов с методами или, по крайней мере, читабельными структуроподобными полями-членами. Например, это может быть тип с именем CarType, который имеет поля доступа, такие как «get_Make», «get_Model», «get_Year», «get_BasePrice» и так далее.

Затем я хотел бы опубликовать экземпляры const, такие как FORD_PINTO_1973.

(Пожалуйста, не читайте слишком много в примере, чтобы сказать мне, что этот конкретный пример лучше подходит для обычных классов без экземпляров const или чего-то подобного).

Я понятия не имею, как бы я определил в IDL тот факт, что FORD_PINTO_1973 имеет поле года 1973.

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


person Ptah- Opener of the Mouth    schedule 21.01.2010    source источник


Ответы (1)


IDL предназначен для определения интерфейсов — контрактов о том, что можно делать с объектом. Реализация реальных объектов выходит за рамки IDL.

Чтобы предоставить свойство только для чтения, укажите геттер (используйте атрибут propget) и не предоставляйте сеттер (propput).

person sharptooth    schedule 22.01.2010
comment
IDL предназначен не только для определения интерфейсов; например, вы можете определить перечисления, вы можете определить константы, вы можете определить структуры. Учитывая, что вы можете определять константы и структуры, я не понимаю, почему не может быть и речи о том, чтобы вы могли определять константные экземпляры структур, и эта возможность удовлетворила бы мои требования. - person Ptah- Opener of the Mouth; 22.01.2010
comment
Да, вы можете определять структуры и интерфейсы — это контракты, определяющие поведение экземпляров, но вы не можете определять сами экземпляры. - person sharptooth; 22.01.2010
comment
Да, вы можете определить экземпляры. Например, вы можете определить экземпляр long. - person Ptah- Opener of the Mouth; 22.01.2010