读书人

c++ 中同一个类的不同对象能互相访问对

发布时间: 2012-02-23 22:01:34 作者: rapoo

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也可以噢

读书人网 >C++

热点推荐