Giriş
Açıklaması şöyle.
Derleme hatasını görmek için şöyle yaparız.
Bu kısıttan kurtulmak mümkün
Örnek
Şöyle yaparız.
Açıklaması şöyle.
Normalde protected üye alana sadece kalıtan sınıftan erişilebilir. Derleme hatasını görmek için şöyle yaparız.You can only access protected members from your own base class instance.
class BaseTest
{
public:
BaseTest(){};
BaseTest(int prot)
{
_protMember = prot;
};
protected:
int _protMember;
};
class SubTest : public BaseTest
{
// followup question
SubTest(const SubTest &subTest)
{
_protMember = subTest._protMember; // this line compiles without error
};
SubTest(const BaseTest &baseTest)
{
_protMember = baseTest._protMember; // this line produces the error
};
};
ÖrnekDerleme hatasını görmek için şöyle yaparız.
SubTest(const SubTest& x); // can access x._protMember
SubTest(const BaseTest& x); // cannot access x._protMember
KurtulmakBu kısıttan kurtulmak mümkün
Örnek
Şöyle yaparız.
struct Base { protected: int value; };
struct Derived : Base
{
void f(Base const& other)
{
//int n = other.value; // error: 'int Base::value' is protected within this context
int n = other.*(&Derived::value); // ok??? why?
(void) n;
}
};