'memcpy'未在此范围内定义

时间:2011-05-22 21:28:11

标签: c++ linux memcpy

我使用以下代码获得“在此范围错误中未定义memcpy”:

CommonSessionMessage::CommonSessionMessage(const char* data, int size) 
    : m_data(new char[size]) {
  memcpy(m_data.get(), data, size);
}

我浏览了这个网站并且谷歌找不到可以解决问题的解决方案。

任何帮助都将不胜感激。

谢谢。

3 个答案:

答案 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_datachar*类型。如果是这样,那么它没有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)