クラス内のchar配列を次のように初期化しようとしていました
class a{
char a[25];
};
a::a(){
a[] = {'a','b','c'};
}
しかし、コンパイル時エラーが発生します。
クラス内のchar配列を次のように初期化しようとしていました
class a{
char a[25];
};
a::a(){
a[] = {'a','b','c'};
}
しかし、コンパイル時エラーが発生します。
コンパイラが C++11 機能をサポートしている場合は、次のように実行できます。
a::a() :arr({'a','b','c'})
{}
それ以外の場合は、手動で行うか、次のような関数を使用できますmemcpy
。
a::a() {
memcpy(arr,"abc",3);
// The other initialization method will fill the rest in with 0,
// I don't know if that's important, but:
std::fill(arr + 3, arr + 25, '\0');
}
または、ephemientが示唆するように:
a::a() {
strncpy(arr, "abc", 25);
}
class LexerP
{
public:
char header[5];
void h();
void echo(){printf(" salut les gars ...\n \n");};
};
void LexerP::h()
{
int i=0;
int j=0;
char headM[5] ={0x07,0x0A,0x05,0x00,0x05};
/* for (i=0;i<strlen(this->header);i++)
header[i]=headM[i];*/
strcpy(this->header,headM)
};
main()
{
LexerP *M=new (LexerP);
M->echo();
M->h();
return 0;
}