代码片段如下:
void GameWeapon::GetMsgWeaponSkillData(MSG_L2C_NOTIFY_WEAPON_SKILL_DATA& msg)
{
for (int idx = 0; idx < m_data.skilldatas_size(); ++idx)
{
const auto& curData = m_data.skilldatas[idx]; // line1
auto* pDestData = msg.add_skilldatas();
pDestData->CopyFrom(curData);
}
}
报错来自来自于line1,报错信息为:
error C3867: “ServerProto::ServerWeaponData::skilldatas”: 非标准语法;请使用 “&” 来创建指向成员的指针
看了半天,才发现是调用方式错误,修改如下:
void GameWeapon::GetMsgWeaponSkillData(MSG_L2C_NOTIFY_WEAPON_SKILL_DATA& msg)
{
for (int idx = 0; idx < m_data.skilldatas_size(); ++idx)
{
const auto& curData = m_data.skilldatas(idx); // 修改后
auto* pDestData = msg.add_skilldatas();
pDestData->CopyFrom(curData);
}
}
但是这报错的提示信息却是牛头不对马嘴啊。