【问题标题】:How to resolve "class must be used when declaring a friend" error?如何解决“声明朋友时必须使用类”错误?
【发布时间】:2011-11-05 10:42:59
【问题描述】:
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++ 编译器编译时运行良好。

【问题讨论】:

  • 呃,你能修复一下格式吗!我试过了,但是太难了。
  • 请你修复你的空白。
  • 请注意,不要使用 Dev-C++,它已经过时了。

标签: c++ visual-c++ dev-c++ friend-function


【解决方案1】:

您的代码有:

friend two;

应该是:

friend class two;

【讨论】:

    【解决方案2】:

    你需要

     friend class two;
    

    而不是

     friend two;
    

    另外,您不需要单独前向声明您的类,因为朋友声明本身就是一个声明。你甚至可以这样做:

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

    【讨论】:

    • thanxx 的帮助,但我没有得到 Visual C++ 编译器的错误
    • @desprado07:嗯,因为许多编译器对这条规则并不严格(在朋友声明中出现类或结构这个词)。但是,根据 11.4 的标准,它是强制的。接受another question 的答案可能会对您有所帮助。
    • C++11允许省略
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2021-04-11
    • 2012-05-31
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多