Get/Set -- Read/Write i C++

Tags:    c++

<< < 123 > >>
Hej,

Har C++ noget lig C#'s Get/Set og Delphi's Read/Write?

Eksempel (C#):
Fold kodeboks ind/udKode 




25 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Jeg ikke give et absolut argument for hvorfor det er smart, dybest set er det blot en omgang syntaktisk sukker. Men jeg kan godt lide dem :)

personligt synes det er lettere at skrive:
window.width = 400;
w = window.width;

fremfor:
window.setWidth(400);
w = window.getWidth();

så kan man jo argumentere for at man bare kunne erklære en variabel public, men det frarøver en muligheden for at eksekvere noget kode, f.eks. at udøve de nødvendige system kald for rent faktisk at resize vinduet.

mvh
Troels



Den side, Troels referer til, er på et for avanceret niveau for mig. Jeg aner virkelig intet om templates, jeg var for ivrig med at gå i gang med win32 applikationer, at jeg ikke byggede noget grundlæggende viden op :( Det må jeg nok til at gøre.


Grunden til jeg synes det er smart, og hvorfor jeg vil bruge det i C++, er at jeg har opbygget mit program på en bestemt måde, så man eksempelvis kan skrive (ja, det er stadig C++, selvom det ligner C#):
Fold kodeboks ind/udKode 

Så vil jeg godt have, at den sender en WM_SETFONT message, når man ændrer Name medlemmet på Font medlemmet.

Jeg ved godt man sagtens ville kunne oprette en funktion, fx UpdateFont (), som sendte den besked, men jeg synes den anden løsning er mere elegant. Indtil videre har jeg også bare brugt funktioner til det.



Templaten jeg linkede til kan du blot kopiere, og så er et eksempel på anvendelsen.

//Troels



Det kan jeg selvfølgelig, og det ender jeg sikkert også med at gøre, og det vil sikkert virke, men mere får jeg heller ikke ud af det. Jeg vil godt lære noget :)



Da jeg altid har programmeret i C og C++ synes jeg at det er naturligt at man skriver hvad der skal ske.

At afvikle andet en triviel kode ved = er for mig at se en uskik; at skjule hvad der i virkeligheden sker.

Hvis:
skrivefelt.Font.Name = "Times New Roman";
Skal gøre andet end at sætte en varibel, mener jeg at det er naturligt at skrive:
skrivefelt.SetFont("Times New Roman");

Men hvis man vil have = til at afvikle kode, må man lave en assignment operator for det man assigner til, som vist i eksemplerne tidligere.



Jo, du får den funktionalitet du gerne ville have. Det at lære at programmere er et hårdværk, det handler om øvelse, fordi øvelse gør mester!!

Hvis du f.eks. skulle bygge en kommode, så kunne du starte med nogle plader, der savet perfekt til, så bore huller i dem og skrue dem sammen, du har stadig bygget en kommode, og så kan du jo lære at save senere.

Du har sikkert brugt objektet vector før uden at vide noget om templates, på samme måde kan du bruge det her.

nok moral (eller mangel på samme) prædiken fra min side af

mvh
Troels



Troels > Nej, vektorer har jeg aldrig benytter mig af, og jeg har ikke lyst til at bygge en kommode :) Hvis jeg vil have en kommode går jeg ned og køber den, jeg vil ikke være snedker, jeg vil være programmør :) Det var selvfølgelig lidt ironisk ment.

I øvrigt snakkede jeg ikke om funktionalitet, men om det faktum, at jeg ikke lærer det store af at kopiere en kode og indsætte den. Det er jo lidt ligesom at kigge efter hos sidemanden.

Jeg vil nu mene jeg har forstået at øvelse gør mester... Af samme grund bliver jeg ved og ved med at øve mig, men det er muligt jeg øver mig på de forkerte ting. I virkeligheden starter jeg nok med at putte mit tøj i skufferne, før jeg har lavet kommoden (for lige at bygge videre på dit ordsprog :)). Men jeg har også et princip med at fælde træet til kommoden selv, i stedet for at låne hos naboen.

Men for lige at komme væk fra kommoderne, så er mit problem, at jeg har struktureret mit program på samme måde som man typisk ville lave det i C#. Og nu støder jeg ind i en mangel fra C++'s side, og for at komme udenom det problem er jeg nødt til at omstrukturere meget store dele af min kode, og det er jeg ikke specielt vild med. Derfor søger jeg get/set metoden.



Indlæg senest redigeret d. 15.04.2007 22:32 af Bruger #8985
Det var nu ikke ironisk ment, men mere en slags analogi (sammenligning). Du bygger jo heller din computer før du begynder at programmere, vel? for slet ikke at snakke om electricitet.

pointen var at man starter et sted og synker så ligeså stille mere og mere ned i de mere syrede ting.

mvh
Troels



Det var ikke dit der var ironisk ment, det var skam mit.
Jeg går ud fra du mener "Du bygger jo heller ikke din computer .......".

Det er sandt, det er vi alle klar over, men jeg har nu slet ikke lyst til at diskutere i hvilken rækkefølge tingene kommer. Jeg vil meget hellere have løst mit problem. I har gjort hvad I kunne, og jeg må bare vende tilbage på et tidspunkt hvor jeg er lidt mere inde i C++, så hvis du lige poster et svar så du kan få tak for din hjælp.



Indlæg senest redigeret d. 15.04.2007 23:30 af Bruger #8985
njaa, behold dem bare, med mindre Bertel er blevet point rytter inden for sidste par måneder, så klager han nok heller ikke.

mvh
Troels



<< < 123 > >>
t