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