Kezdőoldal » Számítástechnika » Programozás » Mi lehet a hiba? Nem bírok...

Mi lehet a hiba? Nem bírok rájönni. //C++

Figyelt kérdés

//main.cpp

# include <iostream> //std::cin;std::cout;std::endl;std::string;

# include <string> //std::string;

# include <windows.h> //Sleep(500);exit(0);

# include <stdlib.h> //EXIT_SUCCESS;


typedef unsigned short ushort;

typedef unsigned int uint;


using std::cout;

using std::cin;

using std::endl;

using std::string;



//create CAT

class CAT

{

public:

CAT(); //konstruktor

CAT(ushort age,ushort weight); //konstruktor2

CAT(const CAT &rhs); //copy konstruktor

~CAT(); //destruktor

const CAT operator= (const CAT &rhs); //operator=


const CAT& operator++ (); //operator++ prefix

const CAT operator++ (int); //operator++ postfix

const CAT operator+ (const CAT &rhs); //operator+


int GetAge()const;

void SetAge(int age);

int GetWeight()const;

void SetWeight(int weight);

private:

ushort *itsAge;

ushort *itsWeight;

};


//konst,konst2,copy konst,dest,operator=

CAT::CAT():

itsAge(new ushort(1)),

itsWeight(new ushort(1))

{cout <<"Konstruktor \n";}


CAT::CAT(ushort age,ushort weight):

itsAge(new ushort(age)),

itsWeight(new ushort(weight))

{cout <<"Konstruktor2 \n";}


CAT::CAT(const CAT &rhs)

{

cout <<"Copy konstruktor \n";

itsAge = new ushort;

itsWeight = new ushort;

*itsAge = rhs.GetAge();

*itsWeight = rhs.GetWeight();

}


CAT::~CAT()

{

cout <<"Destruktor \n";

delete itsAge;

delete itsWeight;

itsAge = NULL;

itsWeight = NULL;

}


const CAT CAT::operator= (const CAT &rhs)

{

cout <<"operator= \n";

if(this == &rhs)

return *this;

delete itsAge;

delete itsWeight;

itsAge = new ushort;

itsWeight = new ushort;

*itsAge = rhs.GetAge();

*itsWeight = rhs.GetWeight();

return *this;

}


//operator++ pre,operator++ post,operator+

const CAT& CAT::operator++ ()

{

cout <<"opeator++ prefix \n";

++*itsAge;

++*itsWeight;

return *this;

}


const CAT CAT::operator++ (int)

{

cout <<"operator++ postfix \n";

++*itsAge;

++*itsWeight;

return *this;

}


const CAT CAT::operator+ (const CAT &rhs)

{

cout <<"operator+ \n";

return CAT(*itsAge+rhs.GetAge());

}


//metódus

int CAT::GetAge()const

{return *itsAge;}


void CAT::SetAge(ushort age)

{*itsAge = age;}


int CAT::GetWeight()const

{return *itsWeight;}


void CAT::SetWeight(ushort weight)

{*itsWeight = weight;}



//main start.

int main()

{

CAT CatOne(2,8),CatTwo(6,12),CatThree;


return EXIT_SUCCESS;

}


hibaüzi:

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp||In member function 'const CAT CAT::operator+(const CAT&)':|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|102|error: no matching function for call to 'CAT::CAT(int)'|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|102|note: candidates are:|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|50|note: CAT::CAT(const CAT&)|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|50|note: no known conversion for argument 1 from 'int' to 'const CAT& {aka const CAT&}'|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|45|note: CAT::CAT(ushort, ushort)|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|45|note: candidate expects 2 arguments, 1 provided|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|40|note: CAT::CAT()|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|40|note: candidate expects 0 arguments, 1 provided|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|109|error: prototype for 'void CAT::SetAge(ushort)' does not match any in class 'CAT'|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|31|error: candidate is: void CAT::SetAge(int)|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|115|error: prototype for 'void CAT::SetWeight(ushort)' does not match any in class 'CAT'|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|33|error: candidate is: void CAT::SetWeight(int)|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp||In member function 'const CAT CAT::operator+(const CAT&)':|

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|103|warning: control reaches end of non-void function [-Wreturn-type]|

||=== Build finished: 12 errors, 1 warnings ===|


2012. márc. 26. 20:12
 1/9 A kérdező kommentje:

Miért nem jó?

return CAT(*itsAge+rhs.GetAge());

itt jelzi,hogy gond van.

2012. márc. 27. 00:00
 2/9 iostream ***** válasza:

Második hibaüzenet:

C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|102|error: no matching function for call to 'CAT::CAT(int)'|


Melyik része nem megy? Lefordítom magyarra: nincs illeszkedő függvény az alábbi szignatúrára: CAT::CAT(int)

2012. márc. 27. 09:40
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
És mit kéne csinálnom,hogy jó legyen.
2012. márc. 27. 16:19
 4/9 A kérdező kommentje:

Nem értem még mindig,hogy miért kell problémáznia a fordítónak hisz ez a függvény deklarációja és definíciója is teljesen jól van.

........................

const CAT CAT::operator+ (const CAT &rhs)

{

cout <<"operator+ \n";

return CAT(*itsAge+rhs.GetAge());

}


Én már tegnapelőttől keresem a választ erre,hogy mit kéne máshogy csinálnom és,hogy miért.

Segítsetek léci most nagy szükségem van rá.

2012. márc. 27. 16:27
 5/9 A kérdező kommentje:
Segítsetek.
2012. márc. 28. 04:03
 6/9 iostream ***** válasza:

"Lefordítom magyarra: nincs illeszkedő függvény az alábbi szignatúrára: CAT::CAT(int)"


Ezt miért nem érted? Az a problémája, hogy te a CAT(int) szignatúrájú függvényt akarod meghívni a kérdéses sorban, ami nem létezik. Nem. Létezik. Mi a megoldás erre a problémára? Egyáltalán tudod mi lenne a CAT(int) szingatúrájú függvény? Segítek: konstruktor. Te ott konstruálni akarsz egy CAT objektumot. Nincs olyan konstruktor. Ezt írja a hibaüzenet is.

2012. márc. 28. 09:20
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:

Így már jó:

return CAT(*itsAge+rhs.GetAge(),*itsWeight+rhs.GetWeight());


De az nem értem iostream,hogy amikor elmagyarázol valamit akkor miért nem értem.

Így is le írhattad volna és egyből sikerült volna megértenem.


ezzel return CAT(*itsAge+rhs.GetAge()) a kóddal te meghívod a konstruktort ami egy paramétert ad át neki.De mivel nincs olyan konstruktor mai egy paramétert várna ezért van a hiba.

2012. márc. 28. 16:20
 8/9 A kérdező kommentje:

na és ha csak az itsAget akarom összeadni return CAT(*itsAge+rhs.GetAge());

Ebben az esetben mindenképp kellene írnom egy konstruktort ami egy bemenő paramétert vár ugye?

2012. márc. 28. 16:22
 9/9 iostream ***** válasza:

Vagy deklarálhatod így a másikat:


CAT(ushort age, ushort weight = 0);

2012. márc. 28. 18:07
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!