template class within another : problem with gcc 3.2.3 on linux (BUG ??)
Suresh T
suresh.t@philips.com
Tue Jun 21 04:06:00 GMT 2005
hi corey,
>> What type of objects are contained_size and inner_object?
Sorry, that was a typo (not in the actual code but in the mail that i
sent).
(Instead of putting the actual code, i wanted to put in a short one
illustrating the problem!!)
inner_object is an object of class contained (which was correct in the
mail). This is within the class "enclosing". The "enclosing"
class has a template parameter "size" and contained is created using that
size. WHICH IS WHERE THE PROBLEM ORIGINATES
as i said in the previos mail.
i.e., contained<size> inner_object;
and there was a typo in the static_cast . It should be :
(static_cast<contained <size> >( inner_object) ) .fun_inner();
I hope i can get some answer as this looks very gcc specific.
Thanks in advance
---------------------------------------------------------------------------------------------------------
Warm Regards,
Suresh.T
To
Suresh T/BTC/SC/PHILIPS@PHILIPS
cc
corey taylor gcc-help@gcc.gnu.org
Subject
Sent by: Re: template class within another :
gcc-help-owner@gcc.g problem with gcc 3.2.3 on linux
nu.org (BUG ??)
Classification
06/20/2005 08:17 PM
Please respond to
corey taylor
<corey.taylor@gmail.
com>
Suresh,
What type of objects are contained_size and inner_object?
corey
On 6/20/05, Suresh T <suresh.t@philips.com> wrote:
> hi,
>
> I need to use a template class object within another template class.
> Specifically gcc (3.2.3 on linux) gives me a problem when the INNER
> TEMPLATE OBJECT IS CREATED USING THE TEMPLATE PARAMETER OF THE ENCLOSING
> CLASS and when i call the inner class object function from the enclosing
> class object function..
> AS this works fine in MS VC7 so i wanted to know if this is some bug in
> gcc
>
> Example :
> In the below example the "enclosing" class contains an object of
> "contained" class. The contained object is created using the
> template parameter of "enclosing" class. When the "enclosing" class
> function is called, we call the function of the inner object.
>
> template <std::size_t size>
> class contained {
> public:
> template <std::size_t sub_size>
> int func_inner(){ ... }
>
> };
>
> template < std::size_t size>
> class enclosing {
>
> public:
>
> template <std::size_t sub_size>
> int func_enclose(){ ...
>
> return
> (static_cast<contained_size>( inner_object) ) .fun_inner();
> //
> =================THIS GIVES AN ERROR ========================
> MARK1
> }
>
> contained<size> inner_object; // ============== THIS IS THE
> ORIGIN OF ERROR ? ===================== MARK2
>
> };
>
>
> Note : The error disappears if i use a specific value when creating the
> inner_object ( MARK 2 above)
> That is instead of "contained<size> inner_object" if i use "contained
<N>
> inner_object" where N is any number like 32.
> (Even in that case i need to use a static_cast ( see MARK 1) to remind
the
> compiler of the data type of inner_object otherwise
> the compiler gives an error which i find strange.)
>
> I cant use a specific value for the inner object as it should take it
from
> the enclosing class template parameter. Since this is
> not working i would greatly appreciate if someone can tell me whether
this
> is a gcc bug or if i need to do something special to let the compiler
> know what i am trying to do.
>
> Thanks &
>
---------------------------------------------------------------------------------------------------------
>
> Warm Regards,
> Suresh.T
>
>
>
More information about the Gcc-help
mailing list