首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++ 中同一个类的不同对象能互相访问对方的 protected 成员?解决思路

2012-02-23 
c++ 中同一个类的不同对象能互相访问对方的 protected 成员?按道理来说应该是不允许才对,不过编译器(VC++

c++ 中同一个类的不同对象能互相访问对方的 protected 成员?
按道理来说应该是不允许才对,不过编译器(VC++ 6)竟然没有报错?
[code=c/c++]
void SHape::copy(const CBShape &sp)
{
    cons(sp.GetType(), sp.IsSelected(), sp.m_bound, sp.m_nhdls, sp.m_handles);
}
[/code]
成员变量 m_... 都是 protected 声明, 但是程序编译通过了, 奇怪

[解决办法]

C/C++ code
class A{protected:    int mX;    int mY;};class B: public A{public:    int GetAX(A *a);};int B::GetAX(A *a){    B *b = static_cast<B *>(a);    return b->mX;}
[解决办法]
探讨
SHape 有继承 CBShape
不过不管是否有继承, 应该都无法访问吧。。。
本身就是不同的对象,难道不同对象间不是只能通过 public 修饰共享数据?

[解决办法]
[Quote=引用:]
引用:
C/C++ codeclassA{protected:intmX;intmY; 
};classB:publicA{public:intGetAX(A a); 
};intB::GetAX(A a){returna.mX; 

试了下,似乎是编不过,只有public才可以,请高手指点。 
 
[code=c/c++]
class SHape {
protected:
  int m_data;

public:
  void copy(const SHape &sp) {
  m_data = sp.m_data;
  }
};
[/code] 
但是这样就可以?
[/Quote]

即便是private也可以噢

热点排行