[msdn] auto_ptr::operator auto_ptr<Other>
Casts from one kind of auto_ptr to another kind of auto_ptr.
template<class Other>
operator auto_ptr<Other>( ) throw( ); Return Value
The type cast operator returns auto_ptr <Other>(*this). Example
// auto_ptr_op_auto_ptr.cpp
// compile with: /EHsc#include <memory>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
auto_ptr<int> pi ( new int( 5 ) );
auto_ptr<const int> pc = ( auto_ptr<const int> )pi;
}
[/msdn]
Re[2]: приведение типа auto_ptr
От:
Аноним
Дата:
06.08.03 12:18
Оценка:
Здравствуйте, Bell, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
B>А зачем?
это трудно объяснить...
будем считать что это академический интерес — такое приведение в принципе возможно?
при этом надо иметь ввиду что оба auto_ptr-а должны быть валидными и указывать
на один и тот же объект (в auto_ptr-е есть счетчик ссылок)...
Re[2]: приведение типа auto_ptr
От:
Аноним
Дата:
06.08.03 12:31
Оценка:
Здравствуйте, Федько Олег, Вы писали:
ФО>Видимо с помощью следующего оператора:
ФО>[msdn] ФО>auto_ptr::operator auto_ptr<Other> ФО>Casts from one kind of auto_ptr to another kind of auto_ptr. ФО>template<class Other> ФО> operator auto_ptr<Other>( ) throw( ); ФО>Return Value ФО>The type cast operator returns auto_ptr <Other>(*this). ФО>Example
ФО>
B>>А зачем? А>это трудно объяснить... А>будем считать что это академический интерес — такое приведение в принципе возможно? А>при этом надо иметь ввиду что оба auto_ptr-а должны быть валидными и указывать А>на один и тот же объект (в auto_ptr-е есть счетчик ссылок)...
Если в нем есть счетчик ссылок, это _принципиально_ уже _не_ auto_ptr, а просто некий "умный" указатель. Как сдеать такой указатель — уже другой вопрос.
А для auto_ptr в твоем случае преобразование простое:
Да есть он, только он не преобразует указатели, которые не могут быть преобразованы _неявно_. И это хорошо, иначе была бы конкретная подстава!
Re[2]: приведение типа auto_ptr
От:
Аноним
Дата:
08.08.03 06:14
Оценка:
Здравствуйте, Федько Олег, Вы писали:
ФО>Видимо с помощью следующего оператора:
ФО>[msdn] ФО>auto_ptr::operator auto_ptr<Other> ФО>Casts from one kind of auto_ptr to another kind of auto_ptr. ФО>template<class Other> ФО> operator auto_ptr<Other>( ) throw( ); ФО>Return Value ФО>The type cast operator returns auto_ptr <Other>(*this). ФО>Example
ФО>[ccode] ФО>// auto_ptr_op_auto_ptr.cpp ФО>// compile with: /EHsc ФО>#include <memory> ФО>#include <iostream> ФО>#include <vector>
кстати а почему это способ не позволяет приводить указатель на родителя к указателю на наследника?