我一直在读的StackOverflow太多,开始怀疑所有我曾经写过,我一直在想代码“那是未定义水煤浆?”即使在代码已经工作了很长时间。铸造指针对象为void *在C++
所以我的问题 - 它是安全和定义良好的行为将一个指向对象(在这种情况下,抽象接口类)转换为void *,然后将它们转换回原始类并调用使用它们的方法?
我充分认识到执行此代码可能是可怕的。我甚至不会考虑现在这样写(这是旧的代码,我不想改变),所以我不想讨论更好的方法来做到这一点。如果我再次这样做,我已经知道如何写得更好。但是,如果实际上在C++中依赖于此,那么我将不得不考虑更改代码,如果它只是非常糟糕的代码,那么更改它就不是优先级。
我不会有任何有关的东西怀疑这个简单的一两年以前,但作为我的C++的增加其实我觉得了解我对代码越来越多的担忧是在标准的安全,即使它工作得很好。也许读太多堆栈溢出是因为有时候生产力坏事:P
虽然这种行为在C++ 0x中当然没有变化,但我认为从不接受草案标准的草案引用来回答关于语言当前状态的问题是不好的做法。 – 2010-04-10 14:27:13
谢谢。在C++编程十年之后,我觉得这样的基本问题很愚蠢,但我对C++的了解越多,我越是怀疑自己。其他人有这种感觉吗? ...嗯,那就是我。 – jcoder 2010-04-11 10:40:44