On May 2, 10:35 am, Bram Kuijper <a.l.w.kuij...@rug.nl> wrote:
Okay, second try (since my posting on 4/27), to find a proper way to
initialize a static reference member to an object.
I try to initialize a static reference inside the class ga, referencing
to an instance of the class bla. According to a previous posting of
Zeppe on 4/27...
 > you should initialize ga::ref outside of any function, like
 > bla& ga::ref = v;
 > but v should be a static variable istantiated before in the same
 > transactional unit, or the result of a function.
Doing that, this is my code:
class bla
{
         public:
                 bla();
                 ~bla();
};
class ga
{
         public:
                 static bla& ref;
                 ga();
                 ~ga();
};
static bla v();
This is declaration of static function v() which returns bla.
As per standard whatever looks like declaration is a declararion.
So change it to
static bla v;
And also define constructors and destructors of bla and ga.
Your code should work now.
ga::ref = v;
  int main()
{
         ga();
         return 0;
}
however, this still does not lead to any proper code, since the compiler
now complains by doing this:
test.cpp:23: error: expected constructor, destructor, or type conversion
before '=' token
test.cpp:21: warning: 'bla v()' declared 'static' but never defined
what is the problem?
a. why can't I just declare bla v() as a static variable?
b. what is then the proper way of initializing ga::ref?
c. references such as the C++ annotations
(http://www.icce.rug.nl/documents/cplusplus/) or even stroustrup's book
are not that verbose on the topic of static reference members. Anyone
can point me towards some documentation on this matter?
thanks in advance,
Bram- Hide quoted text -
- Show quoted text -- Hide quoted text -
- Show quoted text -