2
今天早些时候我偶然发现了这个“问题”。转换操作员问题
我有这个类,它包含一个转换运算符。喜欢的东西:
class myClass {
public:
...
operator anotherClass*() { return anotherClassPtr; }
...
}
现在这一切运作良好..直到我做了这个愚蠢的错误:
void yetAnotherClass::foo(myClass* _p_class)
{
...
anotherClass* lp_anotherClass = (anotherClass*)_p_class;
...
}
而且我花了很长时间才明白,为什么lp_AnotherClass PTR设置为无事-zero,但我确信_p_class中的anotherClassPtr为0.
有什么我可以添加到myClass中,这会阻止我犯这个错误? (即编译器会吐出一些错误)是否有可能阻止对象ptr被转换为其他东西?
感谢您的解释。不幸的是,恰当命名的“myClass”实际上并不是我的...所以我不能将它改为显式操作符(我们还没有切换到C++ 11)。 – Lieuwe
@Lieuwe:很好。一旦你切换到C++ 11,开始采用更好的成语。暂时来说,你可以写一些类似'to_anotherClass()'的东西。这个想法是一样的:明确的! – Nawaz