c++ 中同一个类的不同对象能互相访问对方的 protected 成员?解决思路
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 声明, 但是程序编译通过了, 奇怪
------解决方案--------------------
按道理来说应该是不允许才对,不过编译器(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; }
------解决方案--------------------
------解决方案--------------------
[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也可以噢