On 23 mai, 16:59, "Victor Bazarov" <v.Abaza...@comAcast.net> wrote:
> nassim.bouayad.a...@gmail.com wrote:
> > Hello,
> > here is a code snippet showning my problem :
>
> The first problem is all those underscores. Why do you think
> you need them at all?
>
>
>
>
>
>
>
> > template<typename _K>
> > class TClass1
> > {
> > public:
> > void Process(const _K& arg) const
> > {
>
> > }
> > };
> > template<typename _I>
> > class TClass2
> > {
> > public:
> > void Process(const _I* & arg) const
> > {
> > _class1.Process(arg);
>
> '_I' is 'int', right? '_class1' then 'TClass1<int*>', right?
> Then its template argument (the '_K' inside) is 'int*', right?
> What's the specification of the 'Process' member, then?
>
> void TClass1<int*>:
rocess(int* const&);
>
> So, when you're calling '_class1.Process', what argument type
> are you giving? '_I const * &'. Considering '_I' is 'int',
> you are trying to call 'Process' with
>
> int const * &
>
> instead of
>
> int * const &
>
> . Decide on the position of the const. Or drop the * from
> the definition of '_class1'.
>
>
>
>
>
> > }
> > protected:
> > TClass1<_I*> _class1;
>
> > };
> > int main(int argc, char* argv[])
> > {
>
> > TClass2<int> test1;
>
> > int* ptr = new int;
>
> > test1.Process(ptr);
>
> > delete ptr;
>
> > return 0;
> > }
>
> > This code does not compile, I have got the following error message :
> > "cannot convert parameter 1 from 'const int *' to 'int *const & '"
> > Any idea?I have noted that if I declare _class1 as TClass1<const _I*>,
> > it is working...
>
> Right. If you add a const at the _I, the function you're trying to
> call is
>
> void TClass1<int const*>:
rocess(int const* const&);
>
> which is fine. Its argument ('int const* const&') is compatible with
> 'int const* &' you're trying to give it.
>
> V
> --
> Please remove capital 'A's when replying by e-mail
> I do not respond to top-posted replies, please don't ask- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -
Thank you!