Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   aggregate initialisation (http://www.velocityreviews.com/forums/t454222-aggregate-initialisation.html)

Raghu 05-23-2006 09:39 AM

aggregate initialisation
 
Hello all,
Can somebody help me hopw to resolve teh probelm of aggregate initialisation
in c++.
Her eis the piece of code.

#include<stdio.h>

class MyTest
{
public:
DECLARE_AGGREGATABLE (MyTest);
MyTest(float input = 0.0f):Data(input){}
float Data;
};

struct MyStruct
{
MyTest a;
int b;
};
struct MyStruct test[2] = { {1.2f,1},{2.4f,3}};

int main()
{

printf("%f\n",test[0].a.Data);
return 0;
}

I am getting the compialtion error as follows:

error C2440: 'initializing' : cannot convert from 'const float' to 'struct
MyStruct'
No constructor could take the source type, or constructor overload
resolution was ambiguous.

And when i decalrea str4uct variable as follows:

struct MyStruct test = { 1.2f ,3 };
I am getting the following error:

error C2552: 'test' : non-aggregates cannot be initialized with initializer
list

Is there any option to use initaliser list toassign the UDTS aggregately?
Your help is needed at the earliest.

Thanks in Advance.
Raghu







benben 05-23-2006 09:52 AM

Re: aggregate initialisation
 
Raghu wrote:
> Hello all,
> Can somebody help me hopw to resolve teh probelm of aggregate initialisation
> in c++.


What is aggregate initialization anyway? Aggregation can have a lot of
meanings in different contexts, which one are you talking about?

> Her eis the piece of code.
>
> #include<stdio.h>
>
> class MyTest
> {
> public:
> DECLARE_AGGREGATABLE (MyTest);


Well, what is DECLARE_AGGREGATEABLE? Either provide the definition of
that macro or provide the resultant (non-macro) code equivalent.

> MyTest(float input = 0.0f):Data(input){}
> float Data;
> };
>
> struct MyStruct
> {
> MyTest a;
> int b;
> };
> struct MyStruct test[2] = { {1.2f,1},{2.4f,3}};


MyStruct test[] = {{MyTest(1.2f), 1}, {MyTest(2.4f), 3}};

>
> int main()
> {
>
> printf("%f\n",test[0].a.Data);
> return 0;
> }
>
> I am getting the compialtion error as follows:
>
> error C2440: 'initializing' : cannot convert from 'const float' to 'struct
> MyStruct'
> No constructor could take the source type, or constructor overload
> resolution was ambiguous.
>
> And when i decalrea str4uct variable as follows:
>
> struct MyStruct test = { 1.2f ,3 };


MyStruct test = {MyTest(1.2f), 3};

> I am getting the following error:
>
> error C2552: 'test' : non-aggregates cannot be initialized with initializer
> list
>
> Is there any option to use initaliser list toassign the UDTS aggregately?
> Your help is needed at the earliest.


I still don't get why you need a macro for this matter but if you just
change the lines to those I wrote it should be all right...

>
> Thanks in Advance.
> Raghu
>


Regards,
Ben

Ron Natalie 05-23-2006 09:15 PM

Re: aggregate initialisation
 
Raghu wrote:
> Hello all,
> Can somebody help me hopw to resolve teh probelm of aggregate initialisation
> in c++.
> Her eis the piece of code.
>
> #include<stdio.h>
>
> class MyTest
> {
> public:
> DECLARE_AGGREGATABLE (MyTest);


What does the above line mean?

Ron Natalie 05-23-2006 09:19 PM

Re: aggregate initialisation
 
benben wrote:
> Raghu wrote:
>> Hello all,
>> Can somebody help me hopw to resolve teh probelm of aggregate
>> initialisation
>> in c++.

>
> What is aggregate initialization anyway? Aggregation can have a lot of
> meanings in different contexts, which one are you talking about?
>

The C++ standard defines aggregate. MyTest is not an aggregate (has
a user-defined constructor). However MyStruct is an aggregate. A
member that is not an aggregate itself is permitted in an aggregate.
(It's not like POD's where everything contained within must also be
POD).



All times are GMT. The time now is 04:13 AM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.


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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57