Re: Initialize pointer-to-struct declaration to an unnamed struct?
Ehud Shapira wrote:
There is a huge difference between a string literal and a struct
temporary.
The struct is just as static -- it's a global definition.
No, a temporary created for the purposes of initialising something is
definitely not static. It's temporary.
You could create a static object of the struct type, and then
declare a pointer and initialise it with the address of the static
object:
That's what I'm trying to avoid; naming every linked array of structs.
<shrug> Don't name them. Have an array and get pointers to its
elements:
struct st_a {
int i, j;
} a[] = { { 0, 1 }, {0, 2 } };
struct st_b {
int k, l;
st_a *m;
} b[] = {
{ 1, 2, a+0 },
{ 3, 4, a+1 }
};
You won't have "every" element named, only one.
Another solution is to create those dynamically:
struct st_a {
int i, j;
};
st_a* make_st_a(int i, j) {
st_a a = {i, j};
return new st_a(a);
}
struct st_b {
int k, l;
st_a *m;
} b[] = {
1, 2, make_st_a(0, 1),
3, 4, make_st_a(0, 2)
};
If 'b' is static, you don't have to care about disposing of
those dynamic objects, a small leak like that isn't going to
hurt much. Just be aware of it.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask