鱼大味 2023-09-18 11:10 采纳率: 0%
浏览 5

C++的类做友元使用问题

这样写为什么是错误的?已经提前声明了mygoods,但是为什么还是会报错未定义,把mygoods修改到goodgay之前定义,就不会有问题
编译错误提示:


```c++
invalid use of incomplete type 'class mygoods'
invalid use of incomplete type 'class mygoods'
invalid use of incomplete type 'class mygoods'


程序代码如下:
#include <iostream>
using namespace std;
#include <string>
class mygoods;
class goodgay
{
public:
    goodgay()
    {
        goods = new mygoods;
    }
    void usegoods()
    {
        cout<<"use public:"<<goods->gs1<<endl;
        cout<<"use public:"<<goods->gs2<<endl;
    }
    mygoods *goods;
};

class mygoods
{
    friend class goodgay;
public:
    mygoods()
    {
        gs1 = "抽纸";
        gs2 = "水杯";
    }
    string gs1;
private:
    string gs2;
};

void test01(void)
{
    goodgay gay1;
    gay1.usegoods();
}
int main(void)
{

    cout<<"hello world"<<endl;
    test01();
    system("pause");
    return 0;
}

```

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-09-18 11:13
    关注
    #include <iostream>
    using namespace std;
    #include <string>
    class mygoods;
    class goodgay
    {
    public:
        goodgay();
        void usegoods();
        mygoods *goods;
    };
     
    class mygoods
    {
        friend class goodgay;
    public:
        mygoods()
        {
            gs1 = "抽纸";
            gs2 = "水杯";
        }
        string gs1;
    private:
        string gs2;
    };
    
    goodgay::goodgay()
    {
        goods = new mygoods;
    }
    
    void goodgay::usegoods()
    {
        cout<<"use public:"<<goods->gs1<<endl;
        cout<<"use public:"<<goods->gs2<<endl;
    }
    
    void test01(void)
    {
        goodgay gay1;
        gay1.usegoods();
    }
    int main(void)
    {
     
        cout<<"hello world"<<endl;
        test01();
        system("pause");
        return 0;
    }
    

    另外,英文单词不晓得含义的去查一查,别瞎用。

    评论

报告相同问题?

问题事件

  • 修改了问题 9月18日
  • 修改了问题 9月18日
  • 创建了问题 9月18日