首页 > 解决方案 > 来自类的 C++ memcpy 数据?

问题描述

我有一个小问题,如果我有一个有成员的班级,例如这样

class CSelectPlayerData : public SqlQuery
{
public:
    BYTE m_Member;
    WORD m_Member2;

    Load_Data(CSelectPlayerData, "SELECT Member, Member2 FROM TABLE);
    MAKE_PARAM(m_Member, m_Member2);
}

这段代码的作用是从 sql 表中加载数据,并将它们分配给 Member 和 Member2。我现在的问题是,如果我使用查询,并执行以下操作:

INIT_QUERY(db, CSelectPlayerData) //this also executes the LoadData etc (it's macro)
pPlayer->m_Member = query->m_Member;
...

然后创建一个单独的类,CPlayer

CPlayer Player;

它具有相同的参数(Member,Member2),我可以以某种方式将查询类中的值 memcpy 到播放器,所以我不必这样做

pPlayer->m_... = query->m_...

我知道它并没有那么有用,但这只是为了我的额外知识。感谢您的回答。

标签: c++

解决方案


memcpy 在任何具有 std::is_trivially_copyable 特性的类型上都是安全的。

然而,许多类并不是可简单复制的,在这种情况下,您应该使用复制构造函数。


推荐阅读