Hjälp gällande klasser i C++

Permalänk

Hjälp gällande klasser i C++

Hejsan allihop, det är så att jag är nybörjare när det gäller programmering speciellt c++, men har lite tidigare erfarenhet från andra språk och har nu börjat komma in lite i c++. Men jag har har stött på ett problem och undrar om någon kan stå till tjänst att hjälpa mig med att förklara det

Det jag vill göra är att skapa variabler i klassen och sedan sätta fasta värden med hjälp av en constructor.
I exemplet nedan så har jag löst det genom att göra mina variabler public men de guider och olika information jag läst mig till så påstås det vara väldigt oprofessionellt att göra variabler public. Jag undrar därför om det finns en lösning på detta? När jag flyttar variablerna till private så är det någon del av koden som inte kommer åt dem, vet inte vilken :S

Om det är någon som undrar vad koden är till för, är det för att att skapa en standardenhet som jag sedan kan duplicera för att därefter manipulera dem åtskilt. (Finns förmodligen mycket bättre sätt att göra detta på, men undrar om det går att lösa på det här sättet.)

Tack på förhand om någon vågar kasta sig in och svara

Mitt exempel:

#include <iostream> using namespace std; class StandardUnit{ private: public: StandardUnit(){ //Constructor hp = 30; damage = 5; speed = 1; } int hp; int damage; int speed; }; int main(){ StandardUnit stdu1; cout << "This is the HP of standardunit 1: " << stdu1.hp << "HP" << endl; cout << "This is the damage of standardunit 1: " << stdu1.damage << "damage" << endl; cout << "This is the speed of standardunit 1: " << stdu1.speed << "speed" << endl; system("PAUSE"); }

Permalänk
Medlem

Steg ett:
Lägg all din kod i code-block i forumet så behåller du indentering och får en monospace-font.

Permalänk
Medlem

För att "komma åt" variabler som är privata får du helt enkelt ha flera publika funktioner som du anropar.
Ex;

class StandardUnit{ private: int hp; int damage; int speed; public: StandardUnit(){ //Constructor hp = 30; damage = 5; speed = 1; } int getHp(){ return hp; } int getDmg(){ return damage; } int getSpeed(){ return speed; } };

cout << "This is the HP of standardunit 1: " << stdu1.getHp() << "HP" << endl; cout << "This is the damage of standardunit 1: " << stdu1.getDmg() << "damage" << endl; cout << "This is the speed of standardunit 1: " << stdu1.getSpeed() << "speed" << endl;

Du undrar vilken del det är som inte kommer åt variablerna när du gör dem privata, det är _BARA_ medlemsfunktioner i samma objekt som kan komma åt en privat variabel. Sen har du även protected (skyddade) variabler som även går att komma åt från klasser som ärvt, men detta kommer du lära dig senare (antar att det är någon slags skoluppgift?), eller så passar du på och googlar det redan nu så att du ligger lite före

Visa signatur

Asus M4A79XTD | Phenom II 925 | HD4870 512 | SSD 510 120GB | Caviar Blue 500GB | 4Gb 1600mHz | Corsair VX550
EK-CoolStream RAD XTC 280 | DD-4870 | EK Supreme HF | Phobya DC-12 260 | Phobya Balancer 150

Permalänk

Tack for tipset MrMadMan har fixat det och ska tänka på det till nästa gång!

wrathian - det funkade fint fint! Inte någon skoluppgift utan vill lära mig programmera och den guide jag följer visar olika typer av kod och jag försöker bara var kreativ med de verktyg jag har fått lära mig hittills. uppskattade därför extra tipset jätte mycket!
Tack för hjälpen!

Permalänk
Medlem

Passa även på att kolla på const.
En bra regel är att försöka ha const på saker och ting, typ som getters.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770