c++ - 如果结构相似,在两个不相关的类型之间进行转换是否安全?

标签 c++ casting

这是我们团队的小项目(学术)的一段代码

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/

相关文章:

c++ - 使用 strstream C++ 将数字转换为字符串并返回

c++ - 如何在 C++ 中显式调用异常抛出方法?

C++17 类模板参数推导在初始化列表中不起作用,为什么?

C++ 创建新运算符并重载当前运算符

java - 为什么java在表达式中不自动将int转换为double?

java - 作为 java 程序输入的 vector 的 vector 给出了从 String args[] 到 vector 类型的转换问题

c++ - 为什么需要对函数进行 typedef,同时将 void* 转换为函数指针?

c# - 通过强制转换或鸭式输入不同的对象类型来重用相同的功能

c++ - 意外 token 换行符附近的 qmake 语法错误

c++ - 将静态常量类实例用于开关/案例