October 24, 2006
Consider the following code paying attention to the comments:

class foo {

public:

    static const int TEXT_SIZE = 255; // TEXT_SIZE is
accessible within eggs.

    void bar() {
        size = TEXT_SIZE;
    }

private:

    // static const int TEXT_SIZE = 255; is not accessible
within struct eggs.

    struct eggs {
        // char buffer2[foo::TEXT_SIZE]; does not work.
        char buffer2[TEXT_SIZE];
    };

    char buffer[TEXT_SIZE]; // Public or private TEXT_SIZE
are both accessible.
    int size;

};

Why is TEXT_SIZE not accessible within the struct eggs declaration if TEXT_SIZE is declared to be private?

The declaration of the buffer array and the bar function have no problem with TEXT_SIZE being private but eggs can only access TEXT_SIZE if its declared to be public.

 - Edward
October 24, 2006
"Edward A. Waugh" <edward_waugh@hotmail.com> wrote in message news:ehlo0k$1vfl$1@digitaldaemon.com...
> Consider the following code paying attention to the comments:
>
> class foo {
>
> public:
>
>     static const int TEXT_SIZE = 255; // TEXT_SIZE is
> accessible within eggs.
>
>     void bar() {
>         size = TEXT_SIZE;
>     }
>
> private:
>
>     // static const int TEXT_SIZE = 255; is not accessible
> within struct eggs.
>
>     struct eggs {
>         // char buffer2[foo::TEXT_SIZE]; does not work.
>         char buffer2[TEXT_SIZE];
>     };
>
>     char buffer[TEXT_SIZE]; // Public or private TEXT_SIZE
> are both accessible.
>     int size;
>
> };
>
> Why is TEXT_SIZE not accessible within the struct eggs declaration if TEXT_SIZE is declared to be private?

Because TEXT_SIZE is private. Just because foo::eggs is defined as a member type of foo does not mean it has access to the non-public members of foo.

> The declaration of the buffer array and the bar function have no problem with TEXT_SIZE being private but eggs can only access TEXT_SIZE if its declared to be public.