我談給類成員陣列進行大批賦值的方法 (轉)

worldblog發表於2007-12-12
我談給類成員陣列進行大批賦值的方法 (轉)[@more@]

今天上qq,有一個朋友問我怎麼樣給一個類的成員變數[是陣列]賦初值。
比如:
class CTest
{private:
 int m_arr[10];
 ……
};

如果想給成員m_arr[]陣列賦初值,怎麼辦呢?

我試過
CTest():m_arr({1,2,3,4……})
編譯透過不了,出現錯誤:
cannot specify explicit initializer for arrays
不能給陣列指定明顯的初始化。

我然後告訴他試試在構造內部賦值,他說
如果這樣
CTest()
{
 m_arr[0] =
 m_arr[1] =
……
}
太煩了。
如果
CTest()
{
 m_arr = {1,24,44,……};
}
又編譯不了。

我想了一下,就採用了這個辦法:

#include
#include
#include
#include
#include

class CTest
{
private:
 int m_arr[10];
public:
 CTest()
 {
 int tempArr[10] = {1,2,3,4,6,6,7,5,8,2};
 memcpy(m_arr,tempArr,sizeof(tempArr));
 }
 void Disp()
 {
 for(int i = 0;i<10;i++)
 {
 cout< }
 }
};

void main(void)
{
 CTest t;
 t.Disp();
}

 


結果編譯透過,結果正確。

不知大家遇到這種情況時,如何處理?


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992089/,如需轉載,請註明出處,否則將追究法律責任。

相關文章