无论如何我可以在没有继承的情况下访问类中的 protected 变量。
class ClassA{
protected:
int varA;
};
class ClassB{
protected:
ClassA objectA;
};
ClassB theMainObject;
我想通过 MainObject 访问 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;
}
所以有一种方法可以访问和修改 protected /私有(private)数据。
谁认为这是不可能的,请投票;)
关于C++ 保护访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5312042/