2013-05-30 33 views
-1

我想知道是否有人能夠幫助我理解如何將一個靜態unsigned char數組從一個類安全地傳遞到另一個類。我很抱歉,如果這是微不足道的,但我想確保我做對了。如何安全地將靜態char數組傳遞給另一個類

例如

// First Class 
unsigned char data[1024]; 

TMainClass::TMainClass() 
{ 
    data[34] = 1; 
    data[45] = 65; 
    ... 
    TOtherClass obj(data); 
}; 



// Second class 
static unsigned char obtainedData[1024]; 

TOtherClass::TOtherClass(unsigned char* _data) 
{ 
    obtainedData = _data; 

}; 
+0

定義「安全」和「安全」。 –

回答

0

你是什麼意思 「安全」 或 「安全」 呢?

你的類型是錯誤的(你不要把1個數組分配給另一個)。

這是C++所以真的是你應該使用的std :: string或std ::向量或做即使你需要一個固定的緩衝區的std ::陣列

1

你真的應該使用stl或boost容器。但是,如果你有一個很好的理由不這樣做,那麼...

你傳遞它就好,但分配是錯誤的。

obtainedData = _data; 

你真的應該可以複製的數據

memcpy(obtainedData, _data, 1024); 
std::copy(_data, _data+1024, obtainedData) // Thanks @Grizzly 

或重新定義obtainedData變量

static unsigned char* obtainedData; 

注:

確保你對數組的大小,你'傳遞和複製到。他們保證是相同的大小?

+0

謝謝你,那真是太棒了,生病了:)那麼他們的尺寸是一樣的 – systemerror

+0

認真地說,C++中的'memcpy'?有什麼問題'std :: copy'? – Grizzly

+0

@Grizzly不錯!不幸的是,當我看到一個C風格的數組並需要複製它時,我立即想到了memcpy。我得破了... –

相關問題