Elméleti C++
Sziasztok,
Rövidesen vizsga és sanszos, h ez a kérdés szerepel majd! ;)
Lehet egy konstruktor túlterhelt?
Szabek
- Tovább (Elméleti C++)
- 1894 megtekintés
Sziasztok,
Rövidesen vizsga és sanszos, h ez a kérdés szerepel majd! ;)
Lehet egy konstruktor túlterhelt?
Szabek
Sziasztok!
Az lenne a kérdésem, hogy körülbelül mennyivel lassabb GCC(4.0.3)-vel egy C++ kód egy C kódnál? Van valahol valamilyen benchmark?
Hi!
A K&R C konyvbol tanulok programozgatni. 124. oldalon tartok eppen egy erdekesebb temanal es azt vettem eszre, hogy a peldaprogramban el van irva egy resz es az a baj, hogy amig nem ertem a mukodeset, addig nem is tudom kijavitani. Viszont ameddig nincs kijavitva, addig nem fogom megerteni a mukodeset. Ordogi kor... :)
A Hiba a qsort fuggvenyben van, ahol eloszor hivja a swap fuggvenyt 4 paramterrel, holott az 3-at var. Akinek megvan a konyv az esetleg utananezhetne, hogy is van ez. :\
Elore is koszi!
Az lenne a kérdésem hogy iomanip vagy esetleg más segítségével ki lehet e iratni egy double számot a következoő formátumban:
"egész rész 2-es szélességgel" "," "tört rész 3-as szélességgel"
Például: 3.17 -et szeretném ilyen formában kiirni: 03,170
Megnéztem az iomanip-ban levő beállítasi lehetőségeket, de például arra nem láttam megoldást hogy
"." helyett "," legyen a tizedes jel.
Meg tudom oldalni, de szerintem nem egy túl praktikus megoldás (keletkezik némi kerekítési hiba):
...
double a=3.17;
cout << setfill('0') << setw(2) << (int)a << "," << setw(3) << (int)((a -(int)a)*1000);
...
Ennek eredménye ez lesz: 03,169
Ha valaki tud egy egyszerűbb megoldást, akkor ne kíméljen! :)
Előre is kösz: Safi
valamiért minden amit eddig source-ból akartam felerőszakolni sírt a gcc-miatt.
Mplayer például már confignál ezt köpte vissza:
$ ./configure
Detected operating system: Linux
Detected host architecture: i386
Checking for gcc version ... not found
Checking for gcc version ... not found
Checking for gcc-3.4 version ... not found
Checking for gcc-3.3 version ... not found
Checking for gcc-3.2 version ... not found
Checking for gcc-3.1 version ... not found
Checking for gcc3 version ... not found
Checking for gcc-3.0 version ... not found
Checking for cc version ... not found"
Ami valószínűleg nem igaz, mert synaptic szerintem fent van.Amúgy egy aLinux nevezetű disztró az áldozat.
Sziasztok!
Egy ideje a lelki szemeim előtt lebeg egy debuggolást segítő programocska, amiről nem tudom elhinni, hogy eddig még senki nem csinálta meg, de hiába kerestem Google-ben, nem találtam ilyet. A következőt képzeltem el: szerver-kliens alapú naplózás, a localhoston fut egy naplózó szerver, amely a kliensektől (az éppen debuggolás alatt lévő programoktól) fogadja a naplózandó üzeneteket. Egy ilyen üzenet gyakorlatilag bármit tartalmazhat, egy változó értékét, egy szimpla üzenetet, kulcs-érték párokat, whatever, mindemellett mondjuk van egy "fontossága" (info, warning, error, critical, ilyesmi) meg mondjuk plusz egy mezője, ahol azonosíthatom, hogy a program mely alrendszere küldte az üzenetet. A szerver csak ül egy porton és fogadja ezeket az üzeneteket, majd tárolja őket egy egyszerű SQLite vagy akármilyen lightweight adatbázisban. Ezt az adatbázist pedig akár on-the-fly módon, akár utólag egy erre a célra készített (lehetőleg konzolos, ncurses-felületű) kliensprogrammal lehetne elemezni, a kapott debug üzeneteket tartalom, küldő, időpont, fontosság szerint szűrni. Erre azért gondoltam, mert egy idő után az egyik saját projektem eljutott arra a komplexitásra, hogy konzolra írogatott debug üzenetekkel nagyon nehéz hibát keresni benne, de az IDE-k meg a gdb által nyújtott hibakeresési lehetőségeket is elég nehézkesnek találom (pl ha egy reference count leak-et próbálok levadászni egy Python extension-ben).
Szóval: nem hiszem el, hogy valaki nem csinált már ilyet előttem, tud valaki ilyen kész opensource megoldásról?
Sziasztok!
Azt hiszem valamit félreértettem...
Adott a következő tag-függvény:
void CKeszlet::Lista()
{
KESZLET adat;
this->in_file.open(this->filename.c_str(), ios_base::in);
this->in_file.read((char*)&adat, sizeof(KESZLET));
cout << this->filename << endl << "Azonosito \tKeszlet" << endl;
while(!this->in_file.eof())
{
cout << adat.azon << "\t\t" << adat.keszlet << endl;
this->in_file.read((char*)&adat, sizeof(KESZLET));
}
this->in_file.close();
}
Ha, kétszer egymás után hívom meg ugyanarra, vagy más fájlra (más fájl esetén this->filename változik, de ugyanaz az objektum), akkor a második lefutásnál üres a fájl. Ez miért van így???
Előre is köszi!
pgee
Sziasztok!
Használta már valaki a címben említett lib-et? Ezzel kéne most melózni, és nem igazán haladok. Nincs valakinek egy pici példaprogramja? Kerestem neten, de nem igazán találtam.
Előra is köszi!
Sziasztok!
Kb. 24oras probalkozas es szamtalan keresgeles utan feladtam.
Szoval van itt egy Devcpp 4.9.9.2 + MinGW 3.4.2 talan es egy "keresztplatformos" alkalmazasom, amibe szeretnek beepiteni szinten platofuggetlen fajlkereso eljarast. Ehhez talaltam a boost::filesystem nevezetu libet, aminek elvileg van DevPack-ja is, azonban 2 fele es egyik sem hajlando mukodni.
Felrakvan akarmelyiket, az include fajlokat megtalalja, azonban linkelesnel undefined reference-t kapok minden egyes boost eljarasra, amit csak hasznalna. Ezek a libek a C:\Dev-Cpp\lib konyvtarban vannak, a fordito beallitasainal megadtam, hogy ott is keressen (include-t szinten), azonban nem talalja. A fordito kapcsoloihoz (forumok alapjan) hozzaadtam a -lboost_filesystem kapcsolot, azonban ld erre azt irja, hogy library not found.
Masodik lepeskent eltavolitottam a devpakkokat es letoltottem a boost forrasat, majd az ott leirtak szerint (bjam "-sMINGW_ROOT_DIRECTORY=C:\MinGW" install) le is fordult hiba nelkul es a C:\-ben letrehozott egy BOOST konyvtarat benne az include es a .lib+.dll fajlokkal. Ezeket bemasolva (mostmar a biztonsag kedveert) a MinGW include illetve lib konytaraiba ujbol probalkoztam, azonban a korabban irt eredmennyel.
Kerek mindenkit, akinek esetleg hasonlo gondja akadt es sikerult megoldania, irja le, hogy mit kellene allitanom, mielott kitepem a maradek hajamat is :)
Szep napot!
mfx-
Sziasztok!
A kérdésem a következő lenne... Hogy lehet tudatni az ablakkezelővel, hogy ablakot szeretnék váltani? Kérlek, ne gyors billentyűt mondjatok (alapértelmezésben ALT+TAB), hanem valamilyen beépített programocskát (mint mondjuk a chvt, ami konzolt vált)
A válaszokat előre is köszönöm!
Üdv.: S81