Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Emulating public and private in C structs

Name: Anonymous 2010-06-15 11:30

Consider:
foo.h:
struct Foo {
        int public_1;
        int public_2;
}
struct Foo * create_Foo ();
void bar_Foo (struct Foo*);
/* etc */

foo.c:
#include "foo.h"
struct Foo_private {
        struct Foo foo; /* ??? */
        int private_1;
        int private_2;
}
struct Foo * create_Foo (void) {
        return malloc (sizeof(Foo_private));
}
void bar_Foo (struct Foo *foo) {
        Foo_private *foo_p = (Foo_private*) foo; /* ??? */
        /* do whatever with foo_p->private_1 and foo_p->private_2 */
}

Is there anything wrong with this? I'm dubious about the lines commented with ???. I don't want to write getters and setters for the 'public' stuff.

Name: Anonymous 2010-06-15 23:16

>>15
A well reasoned and coherent argument! Excellent points.
>>16,17
That [intentional tampering] would be a terribly dumb thing to try to prevent
In C, yes, that is my point. There is no information being hidden with this method, so there is no point making it private. Flipping a macro for a syntax check is precisely as private as manually choosing not to externally access it, i.e.: not private at all.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List