Kopie von Array übergeben



  • Hallo,

    ich dachte, wenn ich in C++ nicht explizit einen Pointer * bzw. eine Referenz & als Parameter einer Methode definiere, wird eine Kopie des Elements übergeben? Leider ist dem bei einem Char-Array nicht so, oder? Ich definiere ein beliebiges Char-Array und fülle es mit einigen Werten:

    char foo[30];
    foo[0] = 'a';
    foo[1] = 'b';

    Dann übergebe ich es einer Methode innerhalb einer Klasse:

    Cell::display(char foo[]) {

    // Hier der Code
    }

    Wenn ich aber außerhalb das Array bearbeite, ändert es sich auch innerhalb der Methode. Wie kann das sein?



  • Array-Parameter sind in C++ leider ziemlich seltsam. Am einfachsten kommst du wahrscheinlich weg, wenn du einen Array-Wrapper wie boost::array (www.boost.org) verwendest.

    Edit: Oh, ich hatte an die eingebauten statischen Arrays gedacht. Wenn du Arrays dynamischer Länge übergeben willst, ist boost::array natürlich fehl am Platz 🙂



  • Stefano2 schrieb:

    Hallo,

    ich dachte, wenn ich in C++ nicht explizit einen Pointer * bzw. eine Referenz & als Parameter einer Methode definiere, wird eine Kopie des Elements übergeben? Leider ist dem bei einem Char-Array nicht so, oder?

    Der Arrayname wird aber leider als Zeiger interpretiert, also übergibst Du doch einen Zeiger, und damit wird natürlich dann keine Kopie erstellt



  • Wenn du statt den Char-Strings aus C die strings aus C++ nehmen würdest, dann hättest du keine solchen Probleme...

    MfG MAV


Anmelden zum Antworten