'memcpy'未在此范围内定义

czc*_*ong 7 c++ linux memcpy

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

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

我查看了这个网站和谷歌,找不到可以解决这个问题的解决方案.

任何援助将不胜感激.

谢谢.

Ada*_*ras 18

您是否在代码文件的开头包含string.h/cstring(或包含它的其他标头)?


Naw*_*waz 6

#include <cstring>

CommonSessionMessage::CommonSessionMessage(const char* data, int size) 
: m_data(new char[size]) 
{
    std::memcpy(m_data, data, size);
}
Run Code Online (Sandbox Code Playgroud)

看来这m_data就是char*类型。如果是这样,那么它就没有get()功能,并且m_data.get()在您的代码中没有意义。


另一种解决方案是使用std::copyas :

#include<algorithm>

CommonSessionMessage::CommonSessionMessage(const char* data, int size) 
: m_data(new char[size]) 
{
    std::copy(data, data + size, m_data);
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二种解决方案。阅读 的文档std::copy