我今天早些时候偶然发现了这个“问题”。
我有这个类,它包含一个转换运算符。就像是:
class myClass {
public:
...
operator anotherClass*() { return anotherClassPtr; }
...
}
现在这一切都很好......直到我犯了这个愚蠢的错误:
void yetAnotherClass::foo(myClass* _p_class)
{
...
anotherClass* lp_anotherClass = (anotherClass*)_p_class;
...
}
我花了很长时间才弄清楚为什么 lp_AnotherClass ptr 设置为非零值,而我确信 _p_class 中的 anotherClassPtr 为 0。
有什么我可以添加到 myClass 中来阻止我犯这个错误的吗?(即编译器会吐出一些错误)是否可以防止对象 ptr 被强制转换为其他东西?