2010-01-21 8 views
1

Я знаю, как опубликовать константный простого типа в IDL, например:IDL в ATL/COM: Могу ли я опубликовать const сложного типа?

const long blah = 37 

Но я хочу опубликовать consts сложных типов, с методами, или, по крайней мере, читаемый STRUCT типа полей членов. Например, возможно, тип CarType, который имеет поля доступа, такие как get_Make, get_Model, get_Year, get_BasePrice и т. Д.

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

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

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

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

+0

Это невозможно. –

ответ

0

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

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

+0

IDL предназначен не только для определения интерфейсов; например, вы можете определить перечисления, вы можете определить константы, вы можете определить структуры. Учитывая, что вы можете определить константы и что вы можете определить структуры, я не понимаю, почему не исключено, что вы можете определить постоянные экземпляры структур, и эта способность будет удовлетворять моим требованиям. –

+0

Yeap, вы можете определить структуры и интерфейсы - это контракты, определяющие поведение экземпляров, но вы не можете сами определять экземпляры. – sharptooth

+0

Да, вы можете определить экземпляры. Например, вы можете определить экземпляр long. –