2011-05-22 14 views
6

मैं एक हो रही है कोड का निम्न भाग के साथ "memcpy इस दायरे त्रुटि में निर्धारित नहीं है" में निर्धारित नहीं है:'memcpy' इस दायरे

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

मैं इस साइट के माध्यम से देखा है और गूगल और कर सकता है एक समाधान नहीं मिला जो मेरे लिए इस मुद्दे को हल करेगा।

किसी भी सहायता की सराहना की जाएगी।

धन्यवाद।

+0

आप cstdlib शामिल है? –

+0

@ जॉर्ज: 'memcpy'' 'में है। – kennytm

+0

हम्म हाँ आप सही हैं। मेरी गलती। –

उत्तर

15

क्या आपने अपनी कोड फ़ाइल की शुरुआत में string.h/cstring (या कोई अन्य शीर्षलेख शामिल है) शामिल किया था?

2
#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() समझ में नहीं आता है।

#include<algorithm> 

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

मैं दूसरा समाधान पसंद करेंगे:


एक वैकल्पिक समाधान के रूप में std::copy का उपयोग कर किया जाएगा। std::copy के दस्तावेज़ पढ़ें।

+0

क्षमा करें, मैं इसके लिए boost :: scope_array का उपयोग कर रहा हूं। लेकिन मुझे इसे आज़माएं और मैं आपसे वापस आऊंगा। धन्यवाद। – czchlong

+0

आप कैसे जानते हैं कि 'm_data' में' get() 'फ़ंक्शन है या नहीं? हम इसके प्रकार को नहीं जानते; हम केवल इतना जानते हैं कि यह 'char *' में परिवर्तनीय है। – TonyK

0

मुझे यह वही समस्या थी (हेडर फ़ाइल में), यहां तक ​​कि सभी सही पथ शामिल थे। बाहर निकला कि मेरे फ़ाइल नाम में कोई एक्सटेंशन नहीं था। इसे "सरणी" से "array.hpp" में नामित करने के लिए समस्या हल हो गई। मूर्खतापूर्ण गलती ... आसान फिक्स।

(मैं ग्रहण संस्करण चल रहा हूँ: पर मैक ओएस एक्स 10.6.8 20,120,920-0800: जूनो सेवा रिलीज़ 1, बिल्ड आईडी)

संबंधित मुद्दे