A と B の 2 つのクラスが必要です。クラス B には静的関数があり、A はこの関数と友達になりたいと考えています。
私のコードは以下の通りです
クラスA
#ifndef A_H_
#define A_H_
#include "B.h"
static void B::staticFunction();
class A {
public:
friend static void B::staticFunction();
A();
virtual ~A();
};
#endif /* A_H_ */
クラスB
#ifndef B_H_
#define B_H_
#include "A.h"
class B {
public:
static void staticFunction();
B();
virtual ~B();
};
#endif /* B_H_ */
しかし、コンパイラは私に言います:
メンバー関数 'static void B::staticFunction()' を静的リンケージ [-fpermissive] を持つように宣言することはできません
クラス外の 'static void B::staticFunction()' の宣言は定義ではありません [-fpermissive]
これらのエラーを修正するにはどうすればよいですか? 助けてくれてありがとう
編集
みんなありがとう、私はついに理解しました
作業コードは
class A;
class B{
public:
static void staticFunction(A* a);
};
class A {
public:
friend void B::staticFunction(A* a);
A();
virtual ~A();
private:
int i;
};