吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2424|回复: 2
收起左侧

[C&C++ 转载] 我的类B不是前面声明了吗,怎么还报错?

[复制链接]
jessylake 发表于 2017-12-19 10:45
[C++] 纯文本查看 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

using namespace std;

//友元关系不能被继承,不具有传递性,是单向的,不具有交换性
class B;
class A
{
public:
	A(int a)
	{
		this->a = a;
	}

	void printA(){
		B objB(3000);
		cout << objB.b << endl;
		cout << "a = " << this->a << endl;
	}
	//声明一个友元类B
	friend class B;
private:
	int a;
};

class B
{
public:
	B(int b)
	{
		this->b = b;
	}

	void printB(){
		A objA(100);
		cout << objA.a << endl;
		cout << "b = " << this->b << endl;
	}
	//声明一个友元类B
	friend class A;
private:
	int b;
};

int main(void)
{
	B objB(200);
	objB.printB();

	A objA(2000);
	objA.printA();


	return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| jessylake 发表于 2017-12-19 11:19
本帖最后由 jessylake 于 2017-12-19 11:24 编辑

看来声明的还不够彻底,要把B类完全拆开
[C++] 纯文本查看 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

using namespace std;

//友元关系不能被继承,不具有传递性,是单向的,不具有交换性
class B
{
public:
        B(int b);

        void printB();
        //声明一个友元类A
        friend class A;
private:
        int b;
}; 

class A
{
public:
        A(int a)
        {
                this->a = a;
        }

        void printA(){
                B objB(3000);
                cout << objB.b << endl;
                cout << "a = " << this->a << endl;
        }
        //声明一个友元类B
        friend class B;
private:
        int a;
};

B::B(int b)
{
        this->b = b;
}

void B::printB(){
        A objA(100);
        cout << objA.a << endl;
        cout << "b = " << this->b << endl;
}


//class B
//{
//public:
//        B(int b)
//        {
//                this->b = b;
//        }
//
//        void printB(){
//                A objA(100);
//                cout << objA.a << endl;
//                cout << "b = " << this->b << endl;
//        }
//        //声明一个友元类A
//        friend class A;
//private:
//        int b;
//};

int main(void)
{
        B objB(200);
        objB.printB();

        A objA(2000);
        objA.printA();


        return 0;
}

kk1212 发表于 2017-12-19 13:17
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-2 10:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表