C++ char getter/setter

Status
Niet open voor verdere reacties.

Kitesurfer

Gebruiker
Lid geworden
30 nov 2009
Berichten
5
Hallo,

Hoe implementeer ik de Getter/Setter van een class in het geval van een char-variable ?
In onderstaand voorbeeld wil ik een 'copie' van de tekst 'blabla' in variable newLayout krijgen. Hoe krijg ik dat werkende ?

[cpp]
class clsLayout
{
private:
char prv_layout[20];

public:
void SetLayout (char* argLayout) {
strncpy(prv_layout, argLayout, sizeof(prv_layout));
}

char* GetLayout (void) {
return prv_layout;

}
};

int main (void) {
clsLayout myLayout;
char newLayout[20];

myLayout.SetLayout("blabla");
newLayout = myLayout.GetLayout();
}
[/cpp]
 
Laatst bewerkt door een moderator:
Mag ik allereerst vragen waarom je er voor kiest om char-arrays te gebruiken voor strings in plaats van std::strings?
 
Mag ik allereerst vragen waarom je er voor kiest om char-arrays te gebruiken voor strings in plaats van std::strings?

dat mag ... omdat structs die gegenereerd worden, en waarmee file/sql-io wordt uitgevoerd, allemaal char's bevatten. Ik zou continue aan het converteren zijn van char's naar string en vice versa.
Maar heb je een suggestie/antwoord op de vraag ?
 
dat mag ... omdat structs die gegenereerd worden, en waarmee file/sql-io wordt uitgevoerd, allemaal char's bevatten. Ik zou continue aan het converteren zijn van char's naar string en vice versa.

Dat valt toch ook wel mee :p

[cpp]
string_variable.c_str()
[/cpp]


Maar heb je een suggestie/antwoord op de vraag ?

[cpp]
int main (void) {
clsLayout myLayout;
myLayout.SetLayout("blabla");
char *newLayout = myLayout.GetLayout();
} [/cpp]
 
[cpp]
int main (void) {
clsLayout myLayout;
myLayout.SetLayout("blabla");
char *newLayout = myLayout.GetLayout();
} [/cpp]

Maar bevat newLayout dan een copie van prv_layout ? ... of is newLayout nu een pointer naar hetzelfde adres als prv_layout ?
 
Maar bevat newLayout dan een copie van prv_layout ? ... of is newLayout nu een pointer naar hetzelfde adres als prv_layout ?

Ik zat inderdaad fout. (je krijgt uiteraard een pointer naar prv_layout, en dat is inderdaad niet de bedoeling. Anders had je prv_layout ook wel public kunnen maken.)

Als oplossing zou je een macro of functie kunnen gebruiken om de layout in de char-array te laden.

[cpp]
#define GET_LAYOUT(dest, src) memcpy(dest, src.GetLayout(), strlen(src.GetLayout())+1)

int main (void) {
clsLayout myLayout;
char newLayout[20];

myLayout.SetLayout("blabla");
GET_LAYOUT(newLayout, myLayout);
}
[/cpp]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan