error: invalid static_cast from type ‘xxx*’ to type ‘yyy*’
通常来说, static_cast 不适用于不同指针类型之间的转换, 因为它们是完全不同的两个类型. 如果
自己清楚自己在做什么, 通常对于不同指针类型的转换应该使用reinterpret_cast
C++标准如下:
3.9.1 Fundamental types [basic.fundamental]
1 Objects declared as characters char shall be large enough to store
any member of the implementation's basic character set. If a character from this
set is stored in a character object, the integral value of that character object
is equal to the value of the single character literal form of that character.
It is implementation-defined whether a char object can hold negative values.
Characters can be explicitly declared unsigned or signed. Plain char, signed
char, and unsigned char are three distinct types. A char, a signed char, and
an unsigned char occupy the same amount of storage and have the same alignment
requirements (basic.types); that is, they have the same object representation.
For character types, all bits of the object representation participate in the
value representation. For unsigned character types, all possible bit patterns
of the value representation represent numbers. These requirements do not hold
for other types. In any particular implementation, a plain char object can take
on either the same values as a signed char or an unsigned char; which one is
implementation-defined.
下面这个是摘自 Bjarne Stroustrup