C受保护的访问
发布时间:2020-12-16 10:29:00 所属栏目:百科 来源:网络整理
导读:无论如何,我可以在没有继承的情况下访问类中的受保护变量. class ClassA{ protected: int varA; };class ClassB{ protected: ClassA objectA;};ClassB theMainObject; 我想通过theMainObject访问varA. 解决方法 我认为禁止修改ClassA的定义. 这对你来说是一
无论如何,我可以在没有继承的情况下访问类中的受保护变量.
class ClassA{ protected: int varA; }; class ClassB{ protected: ClassA objectA; }; ClassB theMainObject; 我想通过theMainObject访问varA. 解决方法
我认为禁止修改ClassA的定义.
这对你来说是一个棘手的方式,但我不鼓励你使用它:) class ClassA { protected: int varA; }; class ProtectedRemover // magic thing { public: // <- Note this! :) int varA; }; class ClassB { protected: ClassA objectA; public: // Just add two methods below int getProtectedVarA() { return reinterpret_cast<ProtectedRemover*>(&objectA)->varA; } void setProtectedVarA(int i) { reinterpret_cast<ProtectedRemover*>(&objectA)->varA = i; } }; int main() { ClassB theMainObject; // Set protected thing. theMainObject.setProtectedVarA(3); // Get protected thing. std::cout << theMainObject.getProtectedVarA() << std::endl; } 因此,有一种方法可以访问和修改受保护/私有数据.谁在想这是不可能的,投票;) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |