October 24, 2006 Accessibility of a static constant within a class | ||||
---|---|---|---|---|
| ||||
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 Re: Accessibility of a static constant within a class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Edward A. Waugh | "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. |
Copyright © 1999-2021 by the D Language Foundation