help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

how to make a static function a friend of a class


From: Maett
Subject: how to make a static function a friend of a class
Date: Mon, 16 May 2005 16:33:59 +0200
User-agent: Opera M2/7.54 (Win32, build 3929)

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();
      static const int n;
  };

foo1.cpp:
  #include "foo1.h"

  const int foo1Class::n = 77;

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

  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.
So I insert a static declaration of foo1 into foo1.h:

foo1.h:
  static int foo1();
  class foo1Class {
    public:
      static int getN();
    private:
      friend int foo1();
      static const int n;
  };

Now g++ does not complain anymore.
But when I use foo1Class:
foo2.cpp:
  #include "foo1.h"

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

I get the warning
  foo1.h:6: warning: `int foo1()' declared `static' but never defined

Any idea how to avoid these warnings ?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]