今天上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 <conio.h>#include <stdio.h>#include <iostream.h>#include <string.h>#include <Afxwin.h>
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<<"m_arr["<<i<<"]="<<m_arr[i]<<endl; } }};
void main(void){ CTest t; t.Disp();}
结果编译通过,结果正确。
不知大家遇到这种情况时,如何处理?