1) lad i stedet funktionen returnere en char* 2) Allokér noget hukommelse til strngen i din funktion 3) kopier værdien dertil 4) Når du har aflæst værdien, der hvor du kalder funktionen fra, frigiv mem...
jpk\'s løsning er ofte set anvendt, men generelt er jeg ikke meget for funktioner, der allokerer memory, som en bruger af funktionen senere selv skal de-allokere (men nogen gange er det nødvendigt). En anden metode er
void readRegistry(LPCTSTR key, char* buffer) { .. // skriv hvad der skal skrives i buffer strcpy(buffer,\"Killroy was here\"); .. }
Ulempen her er så istedet at hvad skal readRegistry gøre hvis den har brug for en 100 bytes buffer, mens brugeren kun allokerer 32 bytes? Det kan dog løses på mange måder.
Eksempel med jpk\'s metode:
char* readRegistry(LPCTSTR key) { char* buffer = new char[32]; strcpy(buffer,\"Killroy was here\"); return buffer; }
det jeg egentlig ønskede var indkapsling af metoden, og det har jeg delvist opnået med ttn.bonk\'s metode. ideen med objektorientering er væk ved at bruge jpk\'s metode, men den virker sikkert fint.
Jeg ville absolut ikke selv implementere metoden på den måde, det var blot den løsning der lå tættest på den du selv foreslog...
Grunden til, at jeg spurgte efter udviklingsmiljø, var netop også at kunne give en bedre løsning! Med VC++ kan du, hvis du anvender MFC, jo gøre det helt anderledes og simplere. Jeg ville da heller ikke anvende en char* eller et char array, men en strengtype som MFC\'s CString eller STL\'s string. (jo, jeg ved godt disse klasser blot er wrappere omkring char*)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.