4
class two;
class one
{
    int a;
    public:
        one()
        {
            a = 8;
        }
    friend two;
};

class two
{
    public:
        two() { }
        two(one i)
        {
            cout << i.a;
        }
};

int main()
{
    one o;
    two t(o);
    getch();
}

Dev-C++ から次のエラーが表示されます。

a class-key must be used when declaring a friend

ただし、Microsoft Visual C++ コンパイラでコンパイルすると問題なく動作します。

4

2 に答える 2

12

あなたが必要

 friend class two;

それ以外の

 friend two;

また、フレンド宣言自体が宣言であるため、クラスを個別に前方宣言する必要はありません。これを行うこともできます:

//no forward-declaration of two
class one
{
   friend class two;
   two* mem;
};

class two{};
于 2011-08-28T11:36:21.353 に答える
5

コードには次のものがあります。

friend two;

次のようになります。

friend class two;
于 2011-08-28T11:37:12.943 に答える