salut !

J'ai suivi vos indications et essaye de me mettre aux smart_pointers.
Ca a l'air efficace... mais je ne peux les tester !

J'ai donc developpé la classe suivante (pour m'entrainer) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
#include "stdafx.h"
 
 
#ifndef __SMART_PTR_CLASS__
#define __SMART_PTR_CLASS__
 
 
template< class T >
class PTR
{
private:
	T* m_Ptr;
 
public:
	explicit PTR(T* Value);
	virtual ~PTR();
 
	void Show();
 
	T* operator ->() { return m_Ptr; }
    T& operator *() { return *m_Ptr; }
 
};
 
 
#endif
le cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
template< class T > PTR<T>::PTR(T* Value):m_Ptr(NULL)
{
 if( Value )
	m_Ptr = Value;
}
 
 
template< class T > PTR<T>::~PTR()
{
 if( m_Ptr )
	 delete m_Ptr;
}
 
 
template< class T > void PTR<T>::Show()
{
 if( m_Ptr )
  cout << m_Ptr << endl;
}
ca compile trés bien.
Cependant, dans le fichier main, si je met n'importe quoi en relation avec ma classe, j'obtient des erreurs linker !!!
De plus, dans l'arborescence de VC++ pour les classes : si je dbl-clk sur la methode Show, ile me dit qu'il ne peut m'y emmener puisque la methode n'est pas implémentée !

voici mon code sdans 'main"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
#include "stdafx.h"
#include "smart_ptr.h"
 
int main(int argc, char* argv[])
{
	PTR<int> p = PTR<int>(new int);
 
	return 0;
}
il me jette a la figure les erreur suivantes :
Citation Envoyé par VC++
smart.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall PTR<int>::~PTR<int>(void)" (??1?$PTR@H@@UAE@XZ)
smart.obj : error LNK2001: unresolved external symbol "public: __thiscall PTR<int>:TR<int>(int *)" (??0?$PTR@H@@QAE@PAH@Z)
D
Et question subsidiaire : je construie mon objet. Mais si par defaut je veux lui donner la valeur "n",commet je dois faire, puisque la je dit dans le Ctor "new int" ??

merci