Hallo C++/Template Gurus,
Ik ben momenteel bezig om oude obscure 3rd party code (bouwbaar in Visual C++ 6) om te zetten naar VS2008/2010. In de nieuwere compilers zijn een aantal C++ regels veel strikter gemaakt.
Nu is het meeste vrij eenvoudig gegaan, maar helaas ben ik vastgelopen in een stukje van template van auto pointer, en wel dat de compiler klaagt over de copy constructor.
Originele VC++ 6.0 code (regel 14 geeft het probleem):
De compiler struikelt over de copy constructor in regel 14 en wel met de volgende melding:
Ik loop hier helaas een beetje stuk...
Hebben jullie een hint/suggestie?
Thx
Ik ben momenteel bezig om oude obscure 3rd party code (bouwbaar in Visual C++ 6) om te zetten naar VS2008/2010. In de nieuwere compilers zijn een aantal C++ regels veel strikter gemaakt.
Nu is het meeste vrij eenvoudig gegaan, maar helaas ben ik vastgelopen in een stukje van template van auto pointer, en wel dat de compiler klaagt over de copy constructor.
Originele VC++ 6.0 code (regel 14 geeft het probleem):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| File: my_auto_ptr.h
#ifndef __MY_AUTO_PTR_H
#define __MY_AUTO_PTR_H
#include <vector>
template <class T>
class my_auto_ptr : public std::auto_ptr<T>
{
public:
my_auto_ptr() : std::auto_ptr<T>(){}
my_auto_ptr(T* p):std::auto_ptr<T>(p){}
my_auto_ptr(const my_auto_ptr & lp)
:std::auto_ptr<T>(lp){ }
bool operator < (const std::auto_ptr<T> &pt) const { return *get() < *pt ;}
bool operator == (const std::auto_ptr<T> &pt) const { return *get() == *pt ;}
};
#endif |
De compiler struikelt over de copy constructor in regel 14 en wel met de volgende melding:
code:
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
| 1>c:\.....\my_auto_ptr.h(19) : error C2664: 'std::auto_ptr<_Ty>::auto_ptr<T>(std::auto_ptr<_Ty> &) throw()' : cannot convert parameter 1 from 'const my_auto_ptr<T>' to 'std::auto_ptr<_Ty> &' 1> with 1> [ 1> _Ty=CLine, 1> T=CLine 1> ] 1> and 1> [ 1> T=CLine 1> ] 1> and 1> [ 1> _Ty=CLine 1> ] 1> Conversion loses qualifiers 1> c:\.....\my_auto_ptr.h(19) : while compiling class template member function 'my_auto_ptr<T>::my_auto_ptr(const my_auto_ptr<T> &)' 1> with 1> [ 1> T=CLine 1> ] 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxtempl.h(1257) : see reference to class template instantiation 'my_auto_ptr<T>' being compiled 1> with 1> [ 1> T=CLine 1> ] enzovoorts... |
Ik loop hier helaas een beetje stuk...
Hebben jullie een hint/suggestie?
Thx