declaration order of member variables in struct
Michael Eager
eager@eagercon.com
Sun Aug 2 18:06:00 GMT 2009
Martin Ettl wrote:
> -------- Original-Nachricht --------
>> Datum: Sun, 02 Aug 2009 09:03:51 -0400
>> Von: John Fine <johnsfine@verizon.net>
>> An: Michael Eager <eager@eagercon.com>
>> CC: Martin Ettl <ettl.martin@gmx.de>, gcc-help@gcc.gnu.org
>> Betreff: Re: declaration order of member variables in struct
>
>> I think Martin was asking why the usual exception to pre declaration
>> doesn't apply.
>> In defining a class or struct, you can normally use symbols before you
>> declare them.
> Exactly, this was what i was wondering. In definining a class e.g.
>
> class A
> {
> public:
> A():m(0){}
> private:
> double m;
> };
>
> The member variable m is used before its declaration. But at the example, i wrote in my first mail, this does not work.
> I would be interested in why does this not work when using templates?
This has nothing to do with templates. This modified version
of your example fails with the same errors:
const int N = 5;
const int Low = 1;
const int Upp = 2;
struct Root
{
static const int ret = down?Low:mean+1;
static const int mean = (Low+Upp)/2;
static const bool down = ((mean*mean)>=N);
};
I'd have to go back to read the C++ Standard, but I believe that
the initializer for 'm' in your constructor is bound to the class.
The variables 'down' and 'mean' in your example, and in the one
without templates, is not bound to the class.
--
Michael Eager eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077
More information about the Gcc-help
mailing list