SmartPointer & User Conversion & Sucking Compiler

C

coder_lol

MS VS 7.0 happily resolves by SmartPointer and Inheritance, but I got
to use another target compiler and it does not accept user conversion
for templates. Can I forced a recast somehow? I have judiciously
checked almost all constructs with both compiler before coding, but
during a heavy session, I forgot to check the user conversion part,
and now, I am stuck big time :(

So here is my user conversion for a smart pointer class (direct from
Scott Meyer) :)

public:
template<class aNewType> operator SmartPointer<aNewType>()
{
return SmartPointer<aNewType>(pointee);
}

For example,

Class Person;
Class Employee : Person
Class Student : Person

SmartPointer<Person> p;
SmartPointer<Employee> e;
SmartPointer<Student> s

p = e; // "Ambigous user conversion"

Can I safely force the recast? I have only 1-level of inheritance,
so maybe there is a quick rewrite that is safe?

Thanks,
 
C

coder_lol

MS VS 7.0 happily resolves by SmartPointer and Inheritance, but I got
to use another target compiler and it does not accept user conversion
for templates. Can I forced a recast somehow? I have judiciously
checked almost all constructs with both compiler before coding, but
during a heavy session, I forgot to check the user conversion part,
and now, I am stuck big time :(

So here is my user conversion for a smart pointer class (direct from
Scott Meyer) :)

public:
template<class aNewType> operator SmartPointer<aNewType>()
{
return SmartPointer<aNewType>(pointee);
}

For example,

Class Person;
Class Employee : Person
Class Student : Person

SmartPointer<Person> p;
SmartPointer<Employee> e;
SmartPointer<Student> s

p = e; // "Ambigous user conversion"

Can I safely force the recast? I have only 1-level of inheritance,
so maybe there is a quick rewrite that is safe?

Thanks,


I thought of something dirt ugly. Since my refcount is in the base
class P, I could just do the following:

SmartPointer<Person> p(s.getPointee);

Ugly, but that should be safe...?!?
 
W

witkamp

Do you have any template constructors for SmartPointer?
Constructors are included in C++ automatic type conversion system.
The error the you are most likely to be getting is where there is more
than on conversion path between to types.
I bet some constructor the auto type conversion system is trying to
use in the SmartPointer template class.

Thats my thought
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top