атрибут интерфейса [default_pointer]
От: Meethoon  
Дата: 02.08.02 11:32
Оценка:
Кто-нибудь, поясните смысл сабжа по-русски. А то в МСДНе что-то непонятное про звёздочки написано...
С превиликим уважением, Митхун Чакраборти
Re: атрибут интерфейса [default_pointer]
От: Vi2 Удмуртия http://www.adem.ru
Дата: 02.08.02 11:48
Оценка:
Здравствуйте 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.

pointer_default ( ptr | ref | unique )

Example
[
    uuid(6B29FC40-CA47-1067-B31D-00DD010662DA), 
    version(3.3), 
    pointer_default(unique)
] 
interface dictionary 
{
    // Interface definition statements.
}

See Also
interface, Array and Sized-Pointer Attributes, arrays, Arrays and Pointers, [ptr], [ref], [unique], Default Pointer Types

А перевод одной строчки такой:

Атрибут [pointer_default] описывает значение атрибута указателя по умолчанию для всех указателей (кроме указателей верхнего уровня), которые появляются в списке параметров функций этого интерфейса.

Указателей верхнего уровня — это самый первый указатель в списке указателей, например, (выделен) указатель на указатель на тип long, т.е. long * * parameter.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: атрибут интерфейса [default_pointer]
От: Meethoon  
Дата: 02.08.02 12:01
Оценка:
Это понятно. Непонятно чем отличаются ref, unique и ptr указатели. Почему ptr указатели называют полными?
С превиликим уважением, Митхун Чакраборти
Re: атрибут интерфейса [default_pointer]
От: DrMom  
Дата: 02.08.02 12:16
Оценка:
Здравствуйте Meethoon, Вы писали:

M>Кто-нибудь, поясните смысл сабжа по-русски. А то в МСДНе что-то непонятное про звёздочки написано... :???:

Ну на сколько я понял все таки pointer_default(...). Эта штука указывает как работать с указателями без атрибутов.

1) ref — указатели рассматриваются как ссылки
2) unique — Эти указатели могут быть NULL и могут менять значения в функцие.
3) ptr — Указатель такой же как в C.
Re[3]: атрибут интерфейса [default_pointer]
От: Vi2 Удмуртия http://www.adem.ru
Дата: 02.08.02 13:19
Оценка:
Здравствуйте Meethoon, Вы писали:

M>Это понятно. Непонятно чем отличаются ref, unique и ptr указатели. Почему ptr указатели называют полными?


У нас на форуме есть поиск — ишещь или ref, или unique, или ptr. Смотришь информацию, что непонятно, справшиваешь.

А почему полными? Значит, полные по функциональности, не урезанные, любые.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: атрибут интерфейса [default_pointer]
От: timash  
Дата: 05.08.02 12:16
Оценка:
Здравствуйте 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. Никаких переопределения на уровне метода — я не делаю ...

Подскажте, плиз, кто чем может
Re[3]: атрибут интерфейса [default_pointer]
От: Vi2 Удмуртия http://www.adem.ru
Дата: 05.08.02 12:29
Оценка:
Здравствуйте timash, Вы писали:

T>Извините, джентельмены, что вклиниваюсь в Вашу беседу. Есть вопрос по теме:


Ну таки читать всё надо — http://www.rsdn.ru/forum/message.asp?mid=80061&only
Автор: Vi2
Дата: 02.08.02
. Там сказано о том, что "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.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[4]: атрибут интерфейса [default_pointer]
От: timash  
Дата: 05.08.02 12:35
Оценка:
Здравствуйте Vi2, Вы писали:

Vi2>Здравствуйте timash, Вы писали:


T>>Извините, джентельмены, что вклиниваюсь в Вашу беседу. Есть вопрос по теме:


Vi2>Ну таки читать всё надо — http://www.rsdn.ru/forum/message.asp?mid=80061&only
Автор: Vi2
Дата: 02.08.02
. Там сказано о том, что "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.


Большое спасибо Вы как всегда правы ...
Re[5]: Pointer Type Attributes
От: Vi2 Удмуртия http://www.adem.ru
Дата: 05.08.02 13:06
Оценка:
Здравствуйте timash, Вы писали:

T>Вы как всегда правы ...


Долго искал ссылку в MSDN (что-то MSDN при обращении вылетать стала ). Вот она Pointer Type Attributes
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.