Larry I Smith wrote:
Maett wrote:
Hi.

I would like to access private class data out of a static function as
follows:

foo1.h:
  class foo1Class {
    public:
      static int getN();
    private:

friend int ::foo1();
      // friend int foo1();
      static const int n;
  };

foo1.cpp:
  #include "foo1.h"

  const int foo1Class::n = 77;

  int foo1Class::getN()
  {
    return foo1();
  }


int foo1()

But I would like foo1 to be static to avoid it being a global symbol.
(I have a tool which generates c++ code out of data structure definitions, and there are quite a few such definitions, which would lead to manymany global symbols. Unfortunately I am stuck to g++ 3.2.3 for the moment, so I can not use the
__attribute__ ((visibility("hidden")))
mechanism of g++ 3.4 and later.)


  // static int foo1()
  {
    return foo1Class::n;
  }


Then g++ (3.2.3) tells me: foo1.cpp: In function `int foo1()': foo1.cpp:11: `int foo1()' was declared `extern' and later `static' foo1.h:5: previous declaration of `int foo1()'

Which of course is correct.

[snip]

Regards,
Larry


Is there a possibility with anonymous namespaces instead of "static" ? I didn't succeed, either. _______________________________________________ Help-gplusplus mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gplusplus

Reply via email to