2

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;
};
4

1 に答える 1