I have a struct defined like this:
typedef struct
{
int file_handle;
int x;
int y;
} BaseFiles;
I'd basicly like to "sub-class" this structure so that I can add a
couple of members to the end of it, but still use the BaseFiles members
when it is typecast to a BaseFiles pointer.
This works with the Borland C compiler, but the C++ compiler doesn't
like it.
typedef struct
{
BaseFiles;
int z;
} Files3D;
I can then use this code:
Files3D f;
f.x = 10;
f.y = 20;
f.z = 30;
And something like this (but less ugly) works also:
((BaseFiles*)&f)->x = 10;
Is there any way to achieve the same thing in C++? From the help file
I know this exact method isn't supported:
"A Microsoft extension to the C programming language allows the use of
a tagged structure definition within an enclosing structure. The
declaration in the enclosing structure need not name a variable. The
Borland C compiler supports this extension. [snip] This applies only to
Borland C; it is illegal in both ANSI and Borland C++."
For now I have this:
typedef struct
{
int file_handle;
int x;
int y;
int z;
} Files3D;
Which works, but if BaseFiles ever changes, I have to change Files3D
also, or I could end up with bugs.
Keep in mind I have lots of legacy code that uses BaseFiles. Just
looking for a simple way to do this, if possible, but if it requires
changing a bunch of my other code, I'll stick with the kludge or maybe
just add the extra member to the BaseFiles struct.