Initialize character-arrays in der Klasse

Wenn ich kompilieren Sie den folgenden code mit g++ 4.8.2 bekomme ich eine Fehlermeldung.

#include <iostream>

using namespace std;

class test {
public:
    void print() {
        cout << str << endl;
    }

private:
    char str[] = "123456789"; //error: initializer-string for array of chars
                              //is too long
};

int main() {
    char x[] = "987654321";
    cout << x << endl;

    test temp;
    temp.print();
}

Warum bekomme ich diesen Fehler, was ist der Unterschied zwischen str in der Klasse test und x im main Funktion?

  • Sind Sie versuchen, initialisieren Sie ein array von C-style strings? Oder möchten Sie erstellen eine char * und ordnen Sie einen C-string?
  • Sie wissen char str[10] = "123456789"; kompiliert wird , warum ? Denken ! Finden Sie Bücher !
  • Ertönt der Fehlermeldung für diesen code: error: array bound cannot be deduced from an in-class initializer. Diese Einschränkung in C++ ist ein Sicherheits-feature, damit die Leute nicht versehentlich ändern, Klasse layout, ohne es zu merken. Verwenden Sie eine explizite gebunden.
  • In dieser situation, klammerten sich die Fehlermeldung ist viel einfacher zu verstehen, als g++'s.
  • Ich möchte zum initialisieren der C-string.
InformationsquelleAutor so61pi | 2014-04-08
Schreibe einen Kommentar