Wie initialisieren Sie ein const char-array Daten-member mit C++?

Ich habe eine Frage in Bezug auf C++ - Klassen-member-Initialisierung. Der folgende code veranschaulicht meine Frage:

class ABCD
{
public:
    ABCD():ObjNum(3){};
    ~ABCD() {};
     static const  unsigned char getByte[8];
     const int ObjNum;


};

const unsigned char ABCD::getByte[8] = {
    'a','b','c','d','e','f','g','h'
};

int main() 
{
     ABCD test;
     cout<<test.getByte[3]<<endl;


     return 0;
}

Den oben genannten codes funktionieren sehr gut, aber jetzt, wenn ich mich nicht festlegen getByte[8] als statische, wie konnte ich das initialisieren der Klasse? Ich habe versucht auf diese Weise, aber nicht:

class ABCD
{
public:
    ABCD():ObjNum(3),getByte('a','b','c','d','e','f','g','h')
    {

    };
    ~ABCD() {};
    const  unsigned char getByte[8];
     const int ObjNum;


};



int main() 
{
     ABCD test;
     cout<<test.getByte[3]<<endl;


     return 0;
}

Die Fehler, die ich erhalten haben, ist wie folgt:

 error C2536: 'ABCD::ABCD::getByte' : cannot specify explicit initializer for arrays

Ich verstehen, der Grund, warum ich die Fehlermeldung kam, aber ich weiß nicht, wie es zu lösen ist. Irgendeine Idee? Danke!

Brauchen Sie wirklich ein char-array? Es ist besser, std::string. Wenn Sie C++11 Sie haben auch std::array, können Sie eine Initialisierung mit std::initializer_list.
Was ist falsch mit dem ersten code und warum willst du es ändern?
stackoverflow.com/questions/3878670/...
Es ist nichts falsch mit dem ersten code, und es ist nur aus Neugier.

InformationsquelleAutor feelfree | 2012-08-21

Schreibe einen Kommentar