C/C++

Elméleti C++

Fórumok

Sziasztok,

Rövidesen vizsga és sanszos, h ez a kérdés szerepel majd! ;)
Lehet egy konstruktor túlterhelt?

Szabek

Elirt peldaprogram...

Fórumok

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!

c++ és iomanip

Fórumok

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

gcc 3.3.3-2 miért nem jó?

Fórumok

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.

Generikus logging/debug szerver és kliens

Fórumok

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?

Fájlkezelés (C++)

Fórumok

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

libgpgme példa

Fórumok

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!

Dev-C++ vs. BOOST lib

Fórumok

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-

Ablakváltás

Fórumok

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