关于类的组合的问题
#include <iostream>
using namespace std;
class class1
{
public:
class1(void)
{
a=10;
}
protected:
int a;
};
class class2
{
private:
class1 b;
public:
class2(void)
{
}
void call(void);
};
void class2::call(void)
{
b.a=12;
}
void main()
{
class2 elem;
elem.call();
}
我想知道为什么class2中不能直接访问class1中成员。
如果要实现这种功能,应该怎么改最简单。谢谢!!!!!!!!!
[解决办法]
兄弟,procected的含义没记牢吧。
改成public即可。
[解决办法]
对啊,protected类型的成员只能被所属类的成员函数和派生类的成员函数访问,不能被外部类访问。将private int a改为public int a最简单
[解决办法]
在class1中,把class2 声明为class1的友元类。
friend class class2;