错误C2679:binary'=':没有运算符定义,它采用类型的右侧操作数

时间:2016-03-16 04:02:30

标签: c++ string char

我需要你的帮助! 这是我的代码:

strName = pWeapon->GetInvenNormalIcon();

strName是一个字符串!还有GetInvenNormalIcon的返回! 但是现在出了问题!我需要在char * var上设置该字符串! 我试着这样做

pWeapon->szName         = strName;

但是我得到了那个错误

error C2679: binary '=' : no operator defined which takes a right-hand operand of type

我该怎么办?感谢

1 个答案:

答案 0 :(得分:1)

如果strNamestd::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会自动完成所有这些操作,因此最好使用它而不是指针。