A
Aurélien REGAT-BARREL
Bonjour,
dans mon programme j'ai défini le type SmartPtr ainsi :
#include <boost/shared_ptr.hpp>
template<typename T>
struct SmartPtr
{
typedef boost::shared_ptr<T> Type ;
};
afin de pouvoir éventuellement changer de smart ptr plus tard.
Je défini mes types smart ptr ainsi :
typedef SmartPtr<int>::Type IntPtr;
Ok ça marche bien.
Problème : j'arrive pas à utiliser cet alias SmartPtr pour la détection
automatique des types dans les templates:
template<typename T>
void test( typename SmartPtr<T>::Type ptr )
{
*ptr = 10;
}
VC++ 7.1 n'est pas content :
'void test(SmartPtr<T>::Type)' : impossible de déduire l'argument de
modèle de 'T'
si je met boost::shared_ptr à la place ça marche :
template<typename T>
void test2( boost::shared_ptr<T> ptr )
{
*ptr = 10;
}
Mais j'aimerais bien faire pareil avec mon SmartPtr. Est-ce possible ?
Merci.
dans mon programme j'ai défini le type SmartPtr ainsi :
#include <boost/shared_ptr.hpp>
template<typename T>
struct SmartPtr
{
typedef boost::shared_ptr<T> Type ;
};
afin de pouvoir éventuellement changer de smart ptr plus tard.
Je défini mes types smart ptr ainsi :
typedef SmartPtr<int>::Type IntPtr;
Ok ça marche bien.
Problème : j'arrive pas à utiliser cet alias SmartPtr pour la détection
automatique des types dans les templates:
template<typename T>
void test( typename SmartPtr<T>::Type ptr )
{
*ptr = 10;
}
VC++ 7.1 n'est pas content :
'void test(SmartPtr<T>::Type)' : impossible de déduire l'argument de
modèle de 'T'
si je met boost::shared_ptr à la place ça marche :
template<typename T>
void test2( boost::shared_ptr<T> ptr )
{
*ptr = 10;
}
Mais j'aimerais bien faire pareil avec mon SmartPtr. Est-ce possible ?
Merci.