On Tue, Jul 31, 2012 at 12:59:16PM +0200, David Kastrup wrote:
> Graham Percival <gra...@percival-music.ca> writes:
> 
> > On Mon, Jul 30, 2012 at 11:44:28PM +0100, Bernard Hurley wrote:
> >> On Mon, Jul 30, 2012 at 10:14:37PM +0100, Phil Holmes wrote:
> >> > ----- Original Message ----- From: <gra...@percival-music.ca>
> >> >> lily/output-def.cc:38: Real long_name_len = 0.0;
> >> >> could these be class member variables instead of global variables?
> >> >
> >> > I don't believe so.  I'd be happy to be corrected by someone who 
> >> > understands this better than I do, but my understanding of c++ (which I 
> >> > guess at based on c#) says that, in order to access a class member 
> >> > variable, you need to have an instantiation of the class. 
> >
> > That is true.
> >
> >> In C++ variables can be declared static. If this is done all instances of
> >> the class share the same instance of the variable and it can exist
> >> even if the class has no instances see:
> >
> > Yes, that's also true.
> >
> > Let me rephrase my concern: in C++-land, having a global variable
> > (including static variables) are viewed upon like picking one's
> > nose.
> 
> That's total nonsense with regard to static member variables.  There are
> perfectly valid reasons to have variables per-class (which is what a
> static member variable is) rather than per instance, for example for
> class reflection (information about the class itself, like its name and
> other stuff).  C++ uses the equivalent of static members for its virtual
> function tables.
> 
> For information _flow_ bound to instances, one would not use global
> variables.
> 
> It sounds like this would be the case here.
>

Moreover a static member variable can be declared private when it is
only available to methods of the class. This deals with the usual
objections to global variables.

Bernard Hurley

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to