私はC++のいくつかのコードを調べていました。reinterpret_cast
演算子の概念に出くわした場所。
編集1:
クラスのプライベート メンバーへのアクセスはお勧めできません。 しかし、状況によっては、先に進んでそれらにアクセスする必要があります。 私の概念を明確にするために、この質問を出しました。
私が参照した例では、クラスのプライベート メンバーは、同じ変数を持つ構造体を作成するだけでアクセスされ、後で
reinterpret_cast
演算子を実装することによって変更されます。
reinterpret_cast
演算子の使い方は理解しましたが、それが何をするかはわかっていますが、構造体を使用してプライベート クラス メンバーの値を変更する方法を理解できません。
以下は私が参照したソースコードです。
クラス:
class Student
{
public:
explicit Student(float percent) // Cannot be used for conversion
{
static int nid;
id = ++nid;
score = percent;
}
int Id() const
{
return id;
}
float GetScore() const
{
return score;
}
void SetScore(float value)
{
score = value;
}
virtual ~Student(){}
private:
int id;
float score;
};
プライベート クラス メンバーへのアクセスと変更に使用される構造:
struct _Student
{
void* vptr;
int id;
float score;
};
_Student* bs3 = reinterpret_cast<_Student*>(bs2);
bs3->id = 5;
ありがとうございます。間違っていたら訂正してください/適切な方法で質問をすることができませんでした.