*(int*)buf是不可避免的。我从reinterpret_cast这种就可以反证,虽然我从没用过。
我说的是把ClassB* obj 传给 ClassA 的Member.FromJson。类的类型错误和属性的属性的类型错误,我认为是两个问题,起码是有距离的两个问题。
这种错误多大概率、预防这种错误有多大价值、下多大力气,或者说程序员应该多大程度自律,见仁见智了。老派C程序员可能是古典自由主义,我这种半吊子cpp程序员,可能是新保守主义。:-)
【 在 ilovecpp 的大作中提到: 】
: 你只要保证自己的实现正确,MetaHolder<Class>里没有错放别的类的Member,类型安全就没有问题。用户接触不到你内部的void*。
: 序列化里用void*那可太多了。难道我从二进制反序列化int时候就不能*(int*)buf,非得读四个字节出来用位操作拼么?序列化本来就是一个不讲究类型安全的场合。
--
FROM 1.80.241.*