Home » Coding » c++ » Re: class method static variable same across isntances?
Re: class method static variable same across isntances? [message #17260] Fri, 05 October 2007 10:30 Go to next message
chrisval  is currently offline chrisval
Messages: 47
Registered: September 2007
Member
On Oct 5, 9:26 am, "Jim Langston" <tazmas...@rocketmail.com> wrote:
> The output of the following program for me is:
> Same
> 0 1 2
>
> Which is what I want. I just want to confirm this is well defined behavior,
> that a static local variable to a class function/method is the same instance
> across classes.
>
> #include <iostream>
> #include <vector>
>
> class Foo
> {
> public:
> std::vector<int>& Data( )
> {
> static std::vector<int> EmptyData;
>
> return EmptyData;
> }
> int Bar()
> {
> static int Val = 0;
> return Val++;
> }
>
> };

[snip]

Have you thought about deriving from a common base class?

E.g:

class Common
{
static std::vector<int> EmptyData;

// ...

};

class Foo : public Common
{
// ...

If you want common functionality across all instances,
it might be worth looking into something like this.

--
Chris Val
Re: class method static variable same across isntances? [message #17354 is a reply to message #17260 ] Sat, 06 October 2007 11:42 Go to previous message
chrisval  is currently offline chrisval
Messages: 47
Registered: September 2007
Member
On Oct 6, 2:32 pm, "Jim Langston" <tazmas...@rocketmail.com> wrote:
> "Chris ( Val )" <chris...@gmail.com> wrote in messagenews:1191594611.671775.251940@57g2000hsv.googlegroups.com...
>
>
>
>
>
> > On Oct 5, 9:26 am, "Jim Langston" <tazmas...@rocketmail.com> wrote:
> >> The output of the following program for me is:
> >> Same
> >> 0 1 2
>
> >> Which is what I want. I just want to confirm this is well defined
> >> behavior,
> >> that a static local variable to a class function/method is the same
> >> instance
> >> across classes.
>
> >> #include <iostream>
> >> #include <vector>
>
> >> class Foo
> >> {
> >> public:
> >> std::vector<int>& Data( )
> >> {
> >> static std::vector<int> EmptyData;
>
> >> return EmptyData;
> >> }
> >> int Bar()
> >> {
> >> static int Val = 0;
> >> return Val++;
> >> }
>
> >> };
>
> > [snip]
>
> > Have you thought about deriving from a common base class?
>
> > E.g:
>
> > class Common
> > {
> > static std::vector<int> EmptyData;
>
> > // ...
>
> > };
>
> > class Foo : public Common
> > {
> > // ...
>
> > If you want common functionality across all instances,
> > it might be worth looking into something like this.
>
> It's actually used in a method to return a reference to a set using a form
> of recursion.

[snipped code]

Ok, but how is the code you posted relevant to what I asked?

You posted an interest in finding out about a static retaining
its value across all instances of a class. I just wanted to put
forward the suggestion of using a common base class for such
things, to simplify your code and see what your thoughts were :-)

--
Chris Val
Previous Topic:enum to string
Next Topic:MinGW libraries
Goto Forum:
  


Current Time: Fri May 16 02:44:19 EDT 2008

Total time taken to generate the page: 0.11690 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 2.7.7.
Copyright ©2001-2007 FUD Forum Bulletin Board Software