我需要你的帮助! 这是我的代码:
strName = pWeapon->GetInvenNormalIcon();
strName是一个字符串!还有GetInvenNormalIcon的返回! 但是现在出了问题!我需要在char * var上设置该字符串! 我试着这样做
pWeapon->szName = strName;
但是我得到了那个错误
error C2679: binary '=' : no operator defined which takes a right-hand operand of type
我该怎么办?感谢
答案 0 :(得分:1)
如果strName
为std::string
,您必须使用strName.c_str()
方法获取指向其内容的const char*
指针。但是你应该明白,如果strName
是一个局部变量,它将在函数退出时释放,因此你的pWeapon->szName
指针将变为悬空。也许最好让它std::string
。
更新但是,正如@songyuanyao正确指出的那样,c_str()
方法会返回const char*
,因此您无法直接使用它。您应该首先分配内存,然后将字符串内容复制到它。
pWeapon->szName = new char[strName.length() + 1];
strcpy_s(pWeapon->m_mData, strName.length()+1, strName.c_str());
你必须在类析构函数中释放pWeapon->szName
,并确保在重新分配指针时不会泄漏内存。由于std::string
会自动完成所有这些操作,因此最好使用它而不是指针。