沙发床的m会出现按指代不明确(出现菱形)
解决办法
爷爷给爸爸变成虚继承
这样孙子的m直接由爷爷继承得到,孙子也会继承爸爸的单独有的东西`
// 友元函数.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<math.h>
#include<iostream>
#include<string>
using namespace std;
class jiaju {
public:
int m;//材质
};
class Bed :virtual public jiaju {
public:
void sleep()
{
cout << "在床上睡觉" << endl;
}
};
class sofa :virtual public jiaju {
public:
void sit()
{
cout << "在沙发上坐着" << endl;
}
};
class sofaBed :public Bed,public sofa{
public:
void Sleepsit()
{
sleep();
sit();
}
};
//bed 和sofa分别继承了一个m,那么sofaBed会有多少个m呢?
int main()
{
sofaBed sb;
sb.Sleepsit();
//sb.m = 100;//m不明确
sb.Bed::m = 100;
sb.sofa::m = 200;
return 0;
}