Hozzászólások
-
SzerzőBejegyzés
-
Sziasztok! Hirtelen ötlettől vezérelve gondoltam felteszek én is egy Gentoo-t, sokfelől sok jót hallottam róla.
Le is szedtem a netinstall iso-t, kiírtam, el is indul a gép vele, a baj az, hogy még a telepítés elején meghal a folyamat ;]Kiírja, hogy „No bootable devices found, please select one or type shell for … ” (vagy valami hasonlót). Gondolom azzal van baja, hogy öszvissz egy satás winyóm van, az ide primaryn meg egy dvd. Teljesen tanácstalan vagyok, mit kellene csinálnom? Keresgettem a neten, de nemigen találtam infót. Plz help!!
Módszertani szempontból is lehet magyarázni a különbséget: implements-szel csak altípust, extends-zel pedig alosztályt képzel egy õsosztályból (mint pl. C++ -ban a private/public öröklõdés). Amúgymeg az interfészekkel egy-egy tuloajdonsággal ruházhatod fel az osztályodat (mondjuk egy kicsit hiányolom néha, hogy _én_ nem tudom a saját interfészeimet olyan tulajdonsággal felruházni, mint a nyelv tervezõi azt tehetik, gondolok itt arra, hogy ha írok egy akármilyen interfészt + egy run metdust, akkor sehogysem érhetem el u.azt a hatást, mintha a Runnable-t implementálnam … ).
Megvan a mo.: a functional-ban vannak ilyen mûveletek, hogy std::plus,a comp.lang.c++ -ról kaptam a választ, a teljes thread:
http://groups.google.co.hu/group/comp.lang.c++/browse_thread/thread/c620c3a6b4b2c14e/6443469d81f08496?hl=hu#6443469d81f08496Találtam egy gyors referenciát az ott említett könyvre, példákkal illusztrálva:
http://www.halpernwightsoftware.com/stdlib-scratch/quickref.htmlNem, nem erre gondoltam, nem memberre szeretnék pointert állítani. Gondolom csak van valahol az unnamed namespace-ben deklarálva valami sima összeadó operátor, és én arra szeretnék pointert állítani… Ideiglenes mo.-nak írtam egy double sum(double a, double b) {return a+b;} fv.-t, erre állítottam pointert, de ez a mo. elég ronda…
Nem tudja véletlenül közületek vki, hogy hogyan tudok pointert állítani egy globális operátorra? Lehet-e egyáltalán? Nézegettem a neten, de mindenhol csak ködös infókat találtam … Konkrétan egy sima konzolos számológépnél jött elõ a probléma, hogy a „double operator+(double, double)”-ra és társaira szeretnék pointert állítani.
Csak egy észrevétel: a logikai operátorokat talán jobb, ha az ember globálisnak deklarál. Pl.
http://aszt.inf.elte.hu/%7Egsd/pny2/html/ea6_date/date.h.htmlGondolj csak bele, hogy jó, ha a dátumot akarom összehasonlítani egy string-el, akkor megy a friend fv., de ha string az elsõ paraméter, akkor nem igazán lenne jó beleírni az std::string-be egy új friend operátort a dátum típusnak 🙂
Azon gondolkoztam, hogy lehet, hogy ezzel kapcsolatban hülyeséget mondtam:
GyermekOsztaly a;
SzuloOsztaly b = a;Asszem ilyenkor a cpp nekiáll copykonstruktort keresni, de az nincs. Aztán nekiáll értékadó operátort keresni, de az sincs. Mivel egyik sincs, ezért gondolom castolgat egyet, az viszont menni fog, és ezért nem áll neki átmásolgatni a az adatokat, mint a C, és ezért nem gáz a méret, ezért nem fagy szét rögtön segfault-al.
Az egész csak hipotézis, nem nagyon vágom a cpp-t, még csak most tanulgatom. :blush:
kl223 wrote:class SzuloOsztaly {
public:
virtual void kiir() { std::cout < < "SzuloOsztaly!"; }
};class GyermekOsztaly : public SzuloOsztaly {
public:
virtual void kiir() { std::cout < < "GyermekOsztaly!"; }
};Ekkor:
GyermekOsztaly a;
SzuloOsztaly b = a;
b.kiir();Kimenete „Gyermekosztaly!” lesz, hiába hogy egy „SzuloOsztaly” típusú objektumról van szó egyébként.
Azzal a nem-felüldefiniálható cuccal meg majd még kísérletezek, hátha sikerül vmit elérnem. Ha igen, írom majd.kl223
Hmmm…. Ennenk elvileg le sem szabadna fordulnia, nem? Mármint arra gondolok, hogy nem is biztos, hogy a két objektum mérete azonos! Pl. ha ez lenne:
class GyermekOsztaly : public SzuloOsztaly {
public:
virtual void kiir() { std::cout < < "GyermekOsztaly!"; }
int i;
};akkor a GyermekOsztály pontosan sizeof(int)-el nagyobb, mint a SzuloOsztaly. Amúgy nekem a kimenete „SzuloOsztaly” lett…
Az más tészta, hogy haGyermekOsztaly a;
SzuloOsztaly &b = a;van, mert akkor már egy létezõ memóriaterületre akasztok egy másik nevet, és ez „GyermekOsztaly!”-t ír ki, a dinamikus kötésnek köszönhetõen.
Ugyanígy, ha pointerekkel csinálod:GyermekOsztaly *a = new GyermekOsztaly();
SzuloOsztaly *b = a;Akkoris a „GyermekOsztály!” íródik ki.
szati wrote:.NET, devc++ <-- Ezekkel C programot is lehet fejleszteni?
Jah, bocs, el is felejtettem, milyen fórumon vagyok 🙂
Amúgy devcpp-vel igen, lehet C-t is fordítani.vizsla wrote:„Segmentation fault.”
A kétes helyekre (mögé) be kell írni egy szöveget… ha kiírja, akkor nem ott van a hiba, hanem késõbb… stb.Hát nemtudom… A tapasztalataim azt mutatják, hogy elég nemdeterminisztikusan mûködtek a dolgok… Azaz volt, hogy a kritikus sor elõtti kiiratás volt ok, néha az utána lévõ is megjelent, vagy a 10 sorral alattuk lévõ is… Még a gdb sem adott valami normális dumpot. Mondjuk lehet, hogy azért, mert cerr helyett cout-ot használtam, az meg bufferelt, de elméletileg az endl is flush-olja a buffert, nem?
-
SzerzőBejegyzés
legutóbbi hsz