Атрибуты и свойства в C++
От: Михаил Челноков Украина  
Дата: 11.09.02 17:30
Оценка:
Здравствуйте, уважаемые!

Как известно, в VC++ имеют место быть атрибуты и свойства.

Например, я пишу:
[ ... ]
__interface IMyInterface: IDispatch {
[propget, id(1), helpstring("property x")] HRESULT x([out, retval] INT* pX);
[propput, id(1), helpstring("property x")] HRESULT x([in] INT newX);
};

Это всё чУдно компилируется, генерится IDL, из него TLB, и потом я могу писать нечто типа
IMyInterfacePtr p;
...
p->x=0;

Однако, такое я могу писать только в другом проекте. Т.е. в том, при компиляции которого TLB уже есть и импортирован.
В том же проекте, при компиляции которого этот TLB в конце концов генерируется, компилятор выдает ошибку — нет такого поля в этом классе.

С другой стороны, можно объявить x как
__declspec(property(get=get_x,put=put_x)) INT x;
Однако это оказывается несовместимым с атрибутами [propget] и [propput]. А хочется иметь и то, и другое.

Что делать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.