gpt4 book ai didi

c++ - 嵌套类 C++ 中的友元

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:49 26 4
gpt4 key购买 nike

我试图理解嵌套类中友元的概念,但我没有正确理解这个概念。我已经编写了一个示例程序来理解它,但该程序无法运行

#include<iostream>

using namespace std;


class outerClass
{
private:
int a;
public:
class innerClass;
bool print(innerClass);
};

class innerClass
{
friend class outerClass;
private:
int b;

public:
innerClass() =default;

};

bool outerClass::print(outerClass::innerClass obj)
{
cout<<"Value of b in inner class is:"<<obj.b;
}

int main()
{
outerClass in;
outerClass::innerClass obj;
obj.b=5;
in.print(obj);
}

我遇到以下错误:

try.cpp: In member function ‘bool outerClass::print(outerClass::innerClass)’:
try.cpp:26:6: error: ‘obj’ has incomplete type
try.cpp:11:15: error: forward declaration of ‘class outerClass::innerClass’
try.cpp: In function ‘int main()’:
try.cpp:34:28: error: aggregate ‘outerClass::innerClass obj’ has incomplete type and cannot be defined

在阅读网上的文章时,我了解到以下几点,如果它们正确或不正确,请发表评论:

  • innerClass默认可以访问outerClass的所有成员。
  • 要使 outerClass 访问 innnerClass 的私有(private)成员,我们需要将 outerClass 作为 innerClass 的友元类。

请帮助指出代码中的错误,以及我理解的要点是否正确。

最佳答案

outerClass 中的 class innerClass; 行是对您从未定义的 class前向声明

因此 outerClass::innerClass 是一个不完整的类型

开头的单独的 innerClass定义
class innerClass
{

是一个完全不同于前向声明类的

定义的 innerClass 中的 friend class outerClass; 语句没有任何问题。

关于c++ - 嵌套类 C++ 中的友元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40001188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com