By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,837 Members | 1,813 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,837 IT Pros & Developers. It's quick & easy.

aggregate initialisation

P: n/a
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


May 23 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a
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
May 23 '06 #2

P: n/a
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?
May 23 '06 #3

P: n/a
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).

May 23 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.