Здравствуйте Meethoon, Вы писали:
M>Кто-нибудь, поясните смысл сабжа по-русски. А то в МСДНе что-то непонятное про звёздочки написано...
А там про звёздочки вообще ничего не написАно. Вот весь текст
pointer_default
The [pointer_default] attribute specifies the default pointer attribute for all pointers except top-level pointers that appear in parameter lists.
See Also interface, Array and Sized-Pointer Attributes, arrays, Arrays and Pointers, [ptr], [ref], [unique], Default Pointer Types
А перевод одной строчки такой:
Атрибут [pointer_default] описывает значение атрибута указателя по умолчанию для всех указателей (кроме указателей верхнего уровня), которые появляются в списке параметров функций этого интерфейса.
Указателей верхнего уровня — это самый первый указатель в списке указателей, например, (выделен) указатель на указатель на тип long, т.е. long * * parameter.
Здравствуйте Meethoon, Вы писали:
M>Кто-нибудь, поясните смысл сабжа по-русски. А то в МСДНе что-то непонятное про звёздочки написано... :???:
Ну на сколько я понял все таки pointer_default(...). Эта штука указывает как работать с указателями без атрибутов.
1) ref — указатели рассматриваются как ссылки
2) unique — Эти указатели могут быть NULL и могут менять значения в функцие.
3) ptr — Указатель такой же как в C.
Здравствуйте DrMom, Вы писали:
DM>Здравствуйте Meethoon, Вы писали:
M>>Кто-нибудь, поясните смысл сабжа по-русски. А то в МСДНе что-то непонятное про звёздочки написано... DM>Ну на сколько я понял все таки pointer_default(...). Эта штука указывает как работать с указателями без атрибутов.
DM>1) ref — указатели рассматриваются как ссылки DM>2) unique — Эти указатели могут быть NULL и могут менять значения в функцие. DM>3) ptr — Указатель такой же как в C.
Извините, джентельмены, что вклиниваюсь в Вашу беседу. Есть вопрос по теме:
Как я понимаю, pointer_default(unique) вариант используется ATL'ными мастерами по умолчанию. Все хорошо, но вот недавно у меня незадача вышла — в интерфейсе есть метод один, примерно такой:
HRESULT Trigger_Fire([in] VARIANT* pField)
я вызываю энтот метод из другого метода того же интерфеса с NULL'ым значением параметра, и этот вызов МАРШАЛИРУЕТСЯ. Так вот, раньше на W2K — все было OK. Сейчас под XP, вызов метода приводит к ошибке, которая гласит "Пустой указатель был переден заглушке". Ну так вроде все правильно — вызваю с пустым указателем, но так и pointer_default = unique. Никаких переопределения на уровне метода — я не делаю ...
. Там сказано о том, что "The [pointer_default] attribute specifies the default pointer attribute for all pointers except top-level pointers that appear in parameter lists".
T>Как я понимаю, pointer_default(unique) вариант используется ATL'ными мастерами по умолчанию. Все хорошо, но вот недавно у меня незадача вышла — в интерфейсе есть метод один, примерно такой:
T>HRESULT Trigger_Fire([in] VARIANT* pField)
T>я вызываю энтот метод из другого метода того же интерфеса с NULL'ым значением параметра, и этот вызов МАРШАЛИРУЕТСЯ. Так вот, раньше на W2K — все было OK. Сейчас под XP, вызов метода приводит к ошибке, которая гласит "Пустой указатель был переден заглушке". Ну так вроде все правильно — вызваю с пустым указателем, но так и pointer_default = unique. Никаких переопределения на уровне метода — я не делаю ...
T>Подскажте, плиз, кто чем может
top-level pointers управляются ключевым словом [ref],[ptr],[unique] перед самим описанием параметра, и по умолчанию, принимается ref.
Здравствуйте Vi2, Вы писали:
Vi2>Здравствуйте timash, Вы писали:
T>>Извините, джентельмены, что вклиниваюсь в Вашу беседу. Есть вопрос по теме:
Vi2>Ну таки читать всё надо — http://www.rsdn.ru/forum/message.asp?mid=80061&only
. Там сказано о том, что "The [pointer_default] attribute specifies the default pointer attribute for all pointers except top-level pointers that appear in parameter lists".
Vi2>top-level pointers управляются ключевым словом [ref],[ptr],[unique] перед самим описанием параметра, и по умолчанию, принимается ref.