array of structs

K

Kenny McCarty

I am trying to create an array of structs and I am having problems
adding the values into the structure itself. Here is the code:

struct predefinedCaptureSetting
{
int buffer_signal;
int transform_signal;
bool only_solid;
bool line_as_solid;
bool no_texture;
bool optimize_geometry;
bool recompute_normals;
bool last_frame;
};

predefinedCaptureSetting PredefinedSetting[25];
PredefinedSetting[0] = {1,0,false,false,false,true,true,false};
PredefinedSetting[1] = {1,1,false,false,false,true,true,false};
PredefinedSetting[2] = {0,1,false,false,false,true,true,false};
....
....
PredefinedSetting[22] = {1,1,false,false,false,true,true,false};
PredefinedSetting[23] = {1,0,false,false,false,true,true,false};
PredefinedSetting[24] = {1,1,false,false,false,true,true,false};


Is there any reason why the above code wouldn't work? Thanks for any
help
 
M

Michael Mellor

Kenny said:
I am trying to create an array of structs and I am having problems
adding the values into the structure itself. Here is the code:

struct predefinedCaptureSetting
{
int buffer_signal;
int transform_signal;
bool only_solid;
bool line_as_solid;
bool no_texture;
bool optimize_geometry;
bool recompute_normals;
bool last_frame;
};

predefinedCaptureSetting PredefinedSetting[25];
PredefinedSetting[0] = {1,0,false,false,false,true,true,false};
PredefinedSetting[1] = {1,1,false,false,false,true,true,false};
PredefinedSetting[2] = {0,1,false,false,false,true,true,false};
...
...
PredefinedSetting[22] = {1,1,false,false,false,true,true,false};
PredefinedSetting[23] = {1,0,false,false,false,true,true,false};
PredefinedSetting[24] = {1,1,false,false,false,true,true,false};


Is there any reason why the above code wouldn't work? Thanks for any
help

Try the following:

predefinedCaptureSetting PredefinedSetting[25] =
{
{1,0,false,false,false,true,true,false},
{1,1,false,false,false,true,true,false},
{0,1,false,false,false,true,true,false},
....
{1,1,false,false,false,true,true,false},
{1,0,false,false,false,true,true,false},
{1,1,false,false,false,true,true,false}
};

Michael Mellor
 
K

Karl Heinz Buchegger

Kenny said:
I am trying to create an array of structs and I am having problems
adding the values into the structure itself. Here is the code:

struct predefinedCaptureSetting
{
int buffer_signal;
int transform_signal;
bool only_solid;
bool line_as_solid;
bool no_texture;
bool optimize_geometry;
bool recompute_normals;
bool last_frame;
};

predefinedCaptureSetting PredefinedSetting[25];
PredefinedSetting[0] = {1,0,false,false,false,true,true,false};
PredefinedSetting[1] = {1,1,false,false,false,true,true,false};
PredefinedSetting[2] = {0,1,false,false,false,true,true,false};
...
...
PredefinedSetting[22] = {1,1,false,false,false,true,true,false};
PredefinedSetting[23] = {1,0,false,false,false,true,true,false};
PredefinedSetting[24] = {1,1,false,false,false,true,true,false};

Is there any reason why the above code wouldn't work?

Sure.
The thing on the right side of the assignment isn't a struct
it is just a list of numbers and boolean values seperated
by comma and enclosed in { }.

But you can change that.
Give that structure a constructor (Surprise: yes you can do that.
In C++ there is no difference of a class and a struct except that
in a struct everything is public while in a class it is private and
inheritance is again public for structs by default while it is
private for a class).

struct predefinedCaptureSetting
{
predefinedCaptureSetting( int buffer, int transform, bool only, bool line, bool no_text,
bool opt, bool recompute, bool last )
: buffer_signal( buffer ),
transform_signal( transform ),
only_solid( only ),
line_as_solid( line ),
no_texture( no_text ),
optimize_geometry( opt ),
recompute_normals( recompute ),
last_frame( last )
{}

int buffer_signal;
int transform_signal;
bool only_solid;
bool line_as_solid;
bool no_texture;
bool optimize_geometry;
bool recompute_normals;
bool last_frame;
};

Then you can write:

PredefinedSetting[0] = predefinedCaptureSetting( 1,0,false,false,false,true,true,false );


May I ask which text book you are using?
Just that we start warning others about a C++ textbook which
hasn't a chapter on constructors.
 
D

Deming He

Kenny McCarty said:
I am trying to create an array of structs and I am having problems
adding the values into the structure itself. Here is the code:

struct predefinedCaptureSetting
{
int buffer_signal;
int transform_signal;
bool only_solid;
bool line_as_solid;
bool no_texture;
bool optimize_geometry;
bool recompute_normals;
bool last_frame;
};

predefinedCaptureSetting PredefinedSetting[25];
PredefinedSetting[0] = {1,0,false,false,false,true,true,false};
PredefinedSetting[1] = {1,1,false,false,false,true,true,false};
PredefinedSetting[2] = {0,1,false,false,false,true,true,false};
...
...
PredefinedSetting[22] = {1,1,false,false,false,true,true,false};
PredefinedSetting[23] = {1,0,false,false,false,true,true,false};
PredefinedSetting[24] = {1,1,false,false,false,true,true,false};


Is there any reason why the above code wouldn't work? Thanks for any
help

Note that predefinedCaptureSetting's fields are shrinked and the array,
PredefinedSetting's size reduced just to show an example.

struct predefinedCaptureSetting
{
int buffer_signal;
int transform_signal;
bool only_solid;

predefinedCaptureSetting(int buf = 1, int tra = 1, bool onl = false) :
buffer_signal(buf), transform_signal(tra), only_solid(onl){}
};

predefinedCaptureSetting PredefinedSetting[3] =
predefinedCaptureSetting(1,0,false),
predefinedCaptureSetting(0,0,false),
predefinedCaptureSetting(0,1,false) };
 
J

Jerry Coffin

[ ... ]
predefinedCaptureSetting PredefinedSetting[25];
PredefinedSetting[0] = {1,0,false,false,false,true,true,false};
PredefinedSetting[1] = {1,1,false,false,false,true,true,false};
PredefinedSetting[2] = {0,1,false,false,false,true,true,false};

This syntax only works for initialization, not assignment, so you can do
this:

predefinedCaptureSetting PredefinedSetting[25] = {
{1, 0, false, false, false, true, true, false},
{1, 1, false, false, false, true, true, false},

and so on for all 25 items, or you can do something like:

PredefinedSetting[0] =
PredefinedCaptureSetting(1, 0, false, false, false, true, true, false);

and so on for 25 values.

On a different note, I think I'd define things a bit differently. I'd
probably define the bools as an int (or short, or whatever) and define
some names for bit positions, so your first item would be something
along this line:

Predef[0] = Setting(1, 0, OPTIMIZE_GEOMETRY | RECOMPUTE_NORMALS);

At least to me, "OPTIMIZE_GEOMETRY | RECOMPUTE_NORMALS" seems quite a
bit more meaningful than "false, false, false, true, true, false". The
latter is meaningful ONLY if somebody has memorized the order in which
you've arranged the fields -- and even then, you just about have to
count over to be sure whether a particular "true" is in the third or
fourth position (and adding even a couple more possibilities renders it
much more difficult still).
 
K

Kenny McCarty

Thank you everyone for your help. It has been a long time since I
last did any C++ coding so I was a little but rusty :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,528
Members
45,000
Latest member
MurrayKeync

Latest Threads

Top