问题简述:类A调用类B的方法来修改自己的数据。
两种方法实现,其中方法二更优。
方法一:类A之前没有定义类B
剖析:1 类B的方法要能修改类A的数据,则必须把类B的方法声明为类A的友元。那么需要在A定义之前声明类B,在A定义之后定义类B;
2 既然类B在类A之后定义,那如何能够让类A调用类B的方法呢?答曰:声明B的该方法为static成员函数,这样该函数在类B声明时候就定义了。
实现如下:头文件,用于定义类A:
#ifndef MULTI_CLASS_H
#define MULTI_CLASS_H
#include <iostream>
#include <string>
using namespace std;
class ClassA {
public:
friend class ClassB; // 这样ClassB的成员可以访问A的私有成员
void test();
void display();
private:
int a;
string s;
};
#endif /* MULTI_CLASS_H */
源文件,用于定义类A的函数:
#include "multi-class.h"
#include "my-class3.h"
using namespace std;
// ClassA的函数调用类ClassB的static函数
void ClassA::test() {
ClassB::run(*this);
}
void