0

クラス内のchar配列を次のように初期化しようとしていました

class a{
    char a[25];
};

a::a(){
    a[] = {'a','b','c'};
}

しかし、コンパイル時エラーが発生します。

4

2 に答える 2

4

コンパイラが 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);
}
于 2012-07-25T06:32:37.627 に答える
1
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;
}
于 2015-09-03T13:30:22.660 に答える