c++ - Accessibility of a static constant within a class
- Edward A. Waugh (26/26) Oct 24 2006 Consider the following code paying attention to the
- Matthew (4/29) Oct 24 2006 Because TEXT_SIZE is private. Just because foo::eggs is defined as a mem...
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
Oct 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.
Oct 24 2006