Kezdőoldal » Számítástechnika » Programozás » Miért nem fordul le? Sürgős.

Miért nem fordul le? Sürgős.

Figyelt kérdés

//main.cpp

# include <iostream>

# include <cstring>

typedef unsigned short ushort;

typedef unsigned int uint;

using namespace std;


class Ember {

public:

Ember(ushort,string = '\0');

Ember(const Ember &);

~Ember();


void SetName(string name) { *itsName = name; }

void SetMagassag(ushort age) { *itsMagassag = age; }

string GetName()const { return *itsName; }

ushort GetMagassag()const { return *itsMagassag; }

static ushort GetSzamlalo() { return 0; }


Ember & operator=(const Ember &);

bool operator <(const Ember&);

bool operator >(const Ember&);

bool operator <=(const Ember&);

bool operator >=(const Ember&);

Ember & operator++();

Ember operator++(int);

Ember operator-(const Ember&);

protected:

private:

string *itsName;

ushort *itsMagassag;

static ushort itsSzamlalo;

};


ushort Ember::itsSzamlalo = GetSzamlalo();


Ember::Ember(ushort magassag,string name):

itsName(new string(name)),

itsMagassag(new ushort(magassag))

{ ++itsSzamlalo; }


Ember::Ember(const Ember &e):

itsName(new string(e.GetName())),

itsMagassag(new ushort(e.GetMagassag()))

{}


Ember::~Ember() {

delete itsName;

delete itsMagassag;

--itsSzamlalo;

}


Ember & Ember::operator=(const Ember &e) {

if(this==&e)

return *this;

delete itsName;

delete itsMagassag;

itsName = new string(e.GetName());

itsMagassag = new ushort(e.GetMagassag());

return *this;

}


bool Ember::operator<(const Ember &e) {

return this->GetMagassag() < e.GetMagassag();

}


bool Ember::operator>(const Ember &e) {

return this->GetMagassag() > e.GetMagassag();

}


bool Ember::operator<=(const Ember &e) {

return this->GetMagassag() <= e.GetMagassag();

}


bool Ember::operator>=(const Ember &e) {

return this->GetMagassag() >= e.GetMagassag();

}


Ember & Ember::operator++() {

++(*itsMagassag);

return *this;

}


Ember Ember::operator++(int) {

const Ember temp(*this);

++(*itsMagassag);

return temp;

}


Ember Ember::operator-(const Ember &e) {

return new Ember(*itsMagassag - e.GetMagassag());

}


int main() {

return 0;

}


error: invalid conversion from 'Ember*' to 'ushort {aka short unsigned int}' [-fpermissive]


2012. júl. 24. 22:31
 1/5 A kérdező kommentje:

Nem bírok rájönni segítsetek már.

Így nem jó:

return new Ember(*itsMagassag - e.GetMagassag());

Így meg jó:

return Ember(*itsMagassag - e.Getmagassag());

2012. júl. 25. 02:26
 2/5 iostream ***** válasza:

error: invalid conversion from 'Ember*' to 'ushort {aka short unsigned int}' [-fpermissive]


Ez a hibaüzenet azt jelenti, hogy nem tud Ember mutatóból unsigned short-ot konvertálni.


Ez a függvény prototípusa:

Ember Ember::operator-(const Ember &e)


Tedd össze: milyen visszatérési értéket adtál meg a prototípusban, és mivel próbálsz visszatérni?

2012. júl. 25. 09:28
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

Összetettem és jól van.

Nem értem mi a baj.

Segíthetnétek többet is.Én itt egy új objektumot hozok létre dinamikusan.

Ha elhagyom a new kulcsszót akkor jó.

De new kulcsszóval is jónak kellene lennie a new al csak azt mondom meg,hogy a dinamikus memóriába kívánom létrehozni.


Mi az istenér nem tudja létrehozni.

2012. júl. 25. 12:18
 4/5 A kérdező kommentje:

A prototípusban is ezt adtam meg:

Ember Ember::operator-(const Ember &e) ; deklaráció.


definíció:

Ember Ember::operator-(const Ember &e) {

return new Ember(*itsMagassag - e.GetMagassag());

}

2012. júl. 25. 12:27
 5/5 A kérdező kommentje:

Miért rossz így?

Egyszer ugyanilyen formában adtam vissza az értéket és jó volt most meg nem.

2012. júl. 25. 12:28

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!