Arrays übergeben und zurück

gussu

Grünschnabel
Hey..
ich habe folgendes prog ich möchtte einfach die set- und getMethoden für attribute einer klasse en..
das attribut is nen Char array..
ich bekomme die werte gesetzt aber wenn ich diese mit get wieder raushohlen möchte geht des iwie net!
Code:
// klassse
class XY{
private:
    char Pfad[30];
public:

	void setPfad(char*);
	void getPfad(char*);
};

void stadt::setPfad(char *xPfad){
    strcpy(Pfad, xPfad);
}

void stadt::getPfad(char *xPfad){
	strcpy(xPfad,Pfad);
}

ich checke das net wenn ich halt setPfad mache stehen die werte richtig in der Variablen drin.. aber beim geht kommt immer iein müll ruas
aber von prinzip muss ich das doch so machen oder net?
ich übergebe halt nen char array.. der name des array is doch immer die addresse.. deswegen das char * ... aber iwie kommts net an!

thx für hilfe
 
Ich bin gerade übelst müde deswegen setzte ich mich mit dem strcpy nicht auseinander ich glaube so wird das nie funktioniere. Naja ich würd dir den vorschlag machen bei getPfad einf ein Pointer auf das array zurückzugeben und nicht unnötigen speierchplatz verbrauchen.

So ok du willst ein array mit strcpy in einen pointer kopieren.
wie wäre es wenn du einfach die adresse in den pointer schreibst
z.B. so
C:
xPfad = &Pfad;
Oder so wie ich es machen würde
C:
return &Pfad;
 
Zuletzt bearbeitet:
Hi, leider kann ich dir nicht genau erklären warum deine Methode nicht funktioniert. Bei mir löst sie ein Segmentation Fault aus, was soviel bedeutet das aufdem Speicher nicht zugegriffen werden konnte. Jedoch weiß ich das deine Heransgehensweise für die get-Methode ziemlich unkonventionell ist. Generell ist es üblich bei solchen Methoden einen Wert zurückzugeben und selten per Referenz.

C++:
#include <iostream>

// klassse
class XY{
private:
    char Pfad[30];
public:

	void setPfad(char*);
	char* getPfad();
};

void XY::setPfad(char *xPfad){
    strcpy(Pfad, xPfad);
}

char* XY::getPfad(){
	return Pfad;
}


int main(int argc, char* argv[])
{
    XY test;
    test.setPfad("Hallo");
    std::cout << test.getPfad();
    return 0;
}

mfg :)
 
Zuletzt bearbeitet von einem Moderator:
Zurück