| Re: class method static variable same across isntances? [message #17260] |
Fri, 05 October 2007 10:30  |
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  |
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
|
|
|