私は今日、この「問題」に出くわしました。
このクラスがあり、変換演算子が含まれています。何かのようなもの:
class myClass {
public:
...
operator anotherClass*() { return anotherClassPtr; }
...
}
今、これはすべてうまくいきます..私がこのばかげた間違いを犯すまでは:
void yetAnotherClass::foo(myClass* _p_class)
{
...
anotherClass* lp_anotherClass = (anotherClass*)_p_class;
...
}
そして、_p_class の anotherClassPtr が 0 であると確信していたにもかかわらず、lp_AnotherClass ptr がゼロ以外に設定された理由を理解するのに長い時間がかかりました。
この間違いを防ぐために myClass に追加できたものはありますか? オブジェクトの ptr が別のものにキャストされるのを防ぐことは可能ですか?