这是我们团队的小项目(学术)的一段代码
class B{
public:
DWORD GetLen(){return i;}
DWORD i ;
};
class A
{
public:
DWORD GetLen(){return j;}
public:
int j ;
};
B b;
b.i = 2;
A * pA = (A *)&b;
int j = pA->GetLen();
“j”将为 2。 这段代码安全吗?或者,我应该修改它什么?通过使用 reinterpret_cast 或 static_cast?还是其他想法?
最佳答案
Is this code safe?
没有。
What should I do to correct it?
移除强制转换,仅在 A
的实例上调用 A
的成员函数。
至于你应该做什么,嗯,这完全取决于你实际想做什么。
关于c++ - 如果结构相似,在两个不相关的类型之间进行转换是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5321152/