Mc FettoMedlem sedan nov. 20022 355 inlägg Har precis börjat med objektorientering så det är nog inget svårt fel men jag fattar inte vad felet är. Är det någon som vill hjälpa mig? Här kommer min kod:
include <iostream>
using namespace std;
class person {
void getPerson();
void putPerson();
private:
char pnr[11];
char name[31];
char adress[31];
char tfn[11];
};
void person::getPerson() {
char c;
cout\<\<"Ange ditt personnummer: ";
cin.get(pnr, 11,'\\n');
cin.get(c);
cout\<\<"Ange ditt namn: ";
cin.get(name, 31, '\\n');
cin.get(c);
cout\<\<"Ange din adress: ";
cin.get(adress, 31, '\\n');
cin.get(c);
cout\<\<"Ange telefonnummer: ";
cin.get(tfn, 31, '\\n');
cin.get(c);
}
void person::putPerson() {
cout\<\<"Personnr: " \<\<pnr\<\<'\\n';
cout\<\<"Namn: " \<\<name\<\<'\\n';
cout\<\<"Adress: " \<\<adress\<\<'\\n';
cout\<\<"Telefonnr: " \<\<tfn \<\<'\\n';
}
int main() {
person minPerson();
minPerson.getPerson();
minPerson.putPerson();
return 0;
}
kompilatorn klagar på de två raderna i main som är innan return 0
felmedelande: error C2228: left of '.getPerson' must have class/struct/union type
Mc FettoMedlem sedan nov. 20022 355 inlägg Löste det... Med att lägga till detta i klassen peron:
public:
person(int val);
och detta i main: person minPerson(0);
En fråga nu är, måste man göra på detta sätt eller kan man göra på något annat sätt?
Tack på förhand!
nikoMedlem sedan juni 20022 599 inlägg Ja, du borde kunna ha haft som innan och skrivit:
person minPerson;
utan paranteser. På så sätt hade du utnyttjat den defaultkonstruktor kompilatorn skapar åt dig. Har jag för mig ..
PeWMedlem sedan juni 200010 432 inlägg Sen är det alltid trevligare med kodtaggar när man publicerar kod :)
Mc FettoMedlem sedan nov. 20022 355 inlägg provade utan paranteser innan men det funkade inte heller!!
Mc FettoMedlem sedan nov. 20022 355 inlägg Usäkta niko, det gjorde det nu.. måste ha förvirrat mig tidigare ;)
aasahMedlem sedan mars 20034 471 inlägg Re: saknar class, men vad är felet?
Mc Fetto skrev:
...Här kommer min kod:...
...
class person {
void getPerson();
void putPerson();
private:
char pnr[11];
char name[31];
char adress[31];
char tfn[11];
};
...
Jag ser något du kanske kan få problem med snart... För en klass är defaultåtkomst satt till private. Alltså är även metoderna getPerson() och putPerson() privata i lika hög grad som variablerna som explicit deklarerats private. Du har mao enbart deklarerat privata "saker". Om du vill att metoderna ska vara public måste du skriva det.
PeWMedlem sedan juni 200010 432 inlägg För att få det mer korrekt, så ska variablerna vara privata och att man fyller dessa m.h.a konstruktorn. För att sen hämta respektive post definierar man metoder för det.
Mao så ska klassen person laddas med uppgifterna när den skapas - inte genom en metod efter det att typen person deklarerats.
Pseudo:
class person {
private:
mina variabler t_a, t_b,t_b
public:
person(){}
person(var a, var b,var c):t_a(a),t_b(b),t_c(c){}
~person();
void printPerson();
}
main:
person myNewPerson = new person(n_a,n_b,n_c);
Nu var det strängar så lämplig kopieringsfunktionalitet måste till i konstruktorn, snarare än tilldelning som ovan pseudo gör.
Mc FettoMedlem sedan nov. 20022 355 inlägg Tackar killar, fick för mig att det man inte deklarerade till ngt var publict men ack så fel man kan ha :)
PeWMedlem sedan juni 200010 432 inlägg Tänk på vilket ansvar klassen person ska ha. Som det är nu ska personen själv ta reda på vad den heter och personnummer. Är det inte mer naturligt att en person har detta redan när den skapas (i konstruktorn)?
OO är inte bara ytterligare en kodningsteknik, utan ett sätt att modellera och kapsla in. :)
Mc FettoMedlem sedan nov. 20022 355 inlägg Japp, jag får ta och läsa lite mer om OO, så jag får in tankesättet på en gång :)
aasahMedlem sedan mars 20034 471 inlägg I olika inlägg:
Mc Fetto skrev:
Tackar killar, fick för mig att det man inte deklarerade till ngt var publict men ack så fel man kan ha
....
Japp, jag får ta och läsa lite mer om OO, så jag får in tankesättet på en gång :)
Ett tips är att skaffa en grundläggande bok om C++, då står där nästan säkert en hel del om OO också. En bok som kan relommenderas till en nybörjare är: C++ Primer Third Edition av Stanley B. Lippman, Josée Lajoie. Den går igenom grunderna i C++, avancerad C++ och det mesta däremellan, grunderna i programmering allmänt, dessutom hur man programmerar enligt procedurorientering, objektbaserat - vad de nu menar med det - samt OO. Den kostar nog en del men innehåller också massor! Jag har den själv. Vet inte om den finns på svenska eller ej. Den finns definitivt på engelska.
(Jag skulle uppskatta att inte bli refererad till som "kille"... ;) )
PeWMedlem sedan juni 200010 432 inlägg Andra bra nybörjarböcker är "C++ Direkt" av J.Skansholm och "C++ programming" av S.Pratha :)
Mc FettoMedlem sedan nov. 20022 355 inlägg
aasah skrev:
(Jag skulle uppskatta att inte bli refererad till som "kille"... ;) )
Ursäkta, det var inte menat på något negativt sätt alls! :)
Jag har redan en bok Absolute c++ av Walter Savitch, då denna bok ingår i en kurs jag går! Den är rätt ny så jag hoppas den är ok!
Tack för all hjälp och och tips :)
PeWMedlem sedan juni 200010 432 inlägg
jag hoppas den är ok!
Hoppas jag med, då det finns en uppsjö av c++ böcker, men få belyser OOP:n ;)
Mc FettoMedlem sedan nov. 20022 355 inlägg Men borde det då inte finnas böcker som endast tar upp OOP:n rent generelt utan att binda till ett specefikt språk? Detta vore bra då jag samtidigt läser en java kurs!
aasahMedlem sedan mars 20034 471 inlägg
Mc Fetto skrev:
Men borde det då inte finnas böcker som endast tar upp OOP:n rent generelt utan att binda till ett specefikt språk? Detta vore bra då jag samtidigt läser en java kurs!
Jag tror att det är ganska svårt att hitta en sådan bok. För att förklara och exemplifiera så måste man kunna ge kodexempel. Lite svårt om inget programmeringsspråk får användas... Sedan har ju varje språk sina egna egenheter, jag tror ingen är bekänt av en bok som måste rabbla upp kodsnuttar på ett otal olika språk för att få det generellt.
Å andra sidan har jag mycket svårt att föreställa mig en bok i Java som inte tar upp OOP, såvida det är en grundläggande bok. Men det kanske är fel?
PeWMedlem sedan juni 200010 432 inlägg I den rena OOP kurs jag gick användes Timothy Budd's "An Introduction to Object-Oriented Programming ", vilken ansågs vara bra. OO är inte språkbundet, men däremot är implementationen det. För att förstå OOP tror jag att det är bra om man håller sig så generell som möjligt och undviker att exemplifiera med körbar kod.
Mc FettoMedlem sedan nov. 20022 355 inlägg Ska ta en titt på den boken, tack så mycket!