我使用以下代码获得“在此范围错误中未定义memcpy”:
CommonSessionMessage::CommonSessionMessage(const char* data, int size)
: m_data(new char[size]) {
memcpy(m_data.get(), data, size);
}
我浏览了这个网站并且谷歌找不到可以解决问题的解决方案。
任何帮助都将不胜感激。
谢谢。
答案 0 :(得分:18)
您是否在代码文件的开头包含string.h / cstring(或包含它的其他标头)?
答案 1 :(得分:3)
#include <cstring>
CommonSessionMessage::CommonSessionMessage(const char* data, int size)
: m_data(new char[size])
{
std::memcpy(m_data, data, size);
}
似乎m_data
是char*
类型。如果是这样,那么它没有get()
函数,并且代码中的m_data.get()
没有意义。
另一种解决方案是将std::copy
用作:
#include<algorithm>
CommonSessionMessage::CommonSessionMessage(const char* data, int size)
: m_data(new char[size])
{
std::copy(data, data + size, m_data);
}
我更喜欢第二种解决方案。阅读std::copy
的文档。
答案 2 :(得分:0)
我遇到了同样的问题(在头文件中),即使包含了所有正确的路径。原来我的文件名没有扩展名。将它从“数组”重命名为“array.hpp”为我解决了这个问题。愚蠢的错误...容易解决。
(我在Mac OS X 10.6.8上运行Eclipse版本:Juno Service Release 1,Build id:20120920-0800)