Hirdetés
-
Meggyőző arcjátékkal reagál a kínai humanoid robot
it A kínai Ex-Robots hiperrealisztikus humanoid robotjai meggyőző arckifejezésekkel dolgoznak, a pszichoterápiában és az egészségügyben is bevethetik ezeket.
-
Elnéztük a mai dátumot
ma Nem holnap, ma mutatkozik, pontosabban mutatkozott be a HTC U24 Pro, csak elnéztük (mármint én) egy nappal a dátumot.
-
Végre pontos megjelenési dátumot kapott a Visions of Mana
gp A készítők tisztázták azt is, hogy PlayStation 4-re megjelenik-e a végső kiadás.
Új hozzászólás Aktív témák
-
WonderCSabo
félisten
Ez igaz, viszont a dinamikus memóriakezelés miatt fragmentálódik a memória, az elemek elérése több erőforrásba kerül, sokkal több hibalehetőség van, stb. Fv. paraméterként meg érdemes referencia szerint átadni, és nem kell másolgatni semmit. Én nem mondanám, hogy minden esetben érdemes pointereket használni.
raadasul gyanitom, hogy olyankor az osztalyt megsemmisiti, es ugy peldanyt hoz letre a default copy construktorral, de ez csak tipp
Sztem meg inkább std::copy-val, vagy vmi ilyesmivel másolja át az adatokat.
-
válasz proci985 #1291 üzenetére
csak elszúrtam.
cout << hallgato->getAzonosito() << endl;
kell, mert itt már egy adott objektum pointerével lesz meghívva a függvény, és nem magával a listával.
egyébként emlékeim szerint volt erre valami egyszerűbb megoldás is.
WonderCSabo: a pointer a gyorsabb, emlékeim szerint Lakos a Large-Scale C++ SW Designben konkrétan adott adatokat is, hogy mennyivel (nem találom az oldalt). lehet olyan eset, hogy jobban megéri teljes objektumokat átadni, de szerintem ez nem olyan.
[ Szerkesztve ]
Don't dream it, be it. // Lagom amount.
-
Jester01
veterán
ráadásul gyanítom, hogy olyankor az osztályt megsemmisíti, és
úgyúj példányt hoz létre a default copy construktorralÍgy van. Ha nem POD objektum, akkor valamilyen konstruktor hívásnak lennie kell, akkor is ha az std::copy használatával történik a másolás (csak az még lassabb is lehet, mivel előbb default konstruktor majd operator= hívás lesz).
[ Szerkesztve ]
Jester
-
DrAk3
csendes tag
Sziasztok, abban kérném segítségetek, hogy van egy struktúra tömböm aminek ki kéne írnia azt az N adatot amit beviszek. De az a bajom, hogy az összes helyre a forciklus mindig ugyan azt az adatot rakja be. Mi lehet a baja?
#include <iostream>
#include <string.h>
using namespace std;
struct tanulo
{
char nev[25];
int jegy;
};
int main()
{
int i,j,y;
char x;
cout << " \n Tanulok szama: \t";
cin >> i;
for (j=0;j<i;++j)
{
tanulo j;
cout << "\n Nev: \t";
cin >> j.nev;
cout << "\n Jegy: \t";
cin >> j.jegy;
}
for (j=0;j<i;++j)
{
tanulo j;
cout << "\n" << j.nev << "\t";
cout << "\n" << j.jegy << "\t";
}
cin.get();
cin.get();
return 0;
} -
doc
nagyúr
válasz Jester01 #1306 üzenetére
arrol nem beszelve hogy ugyanazt a ciklusvaltozot hasznalni az egymasbaagyazott ciklusokban, raadasul azokon belul meg szinten ugyanazzal a nevvel egy ujabb valtozot deklaralni...
azert vannak itt alapveto hianyossagok, szerintem elso korben nem artana gyorsan atfutni egy alapveto C-s tutorialtMOD: most latom, nincsenek is egymasba agyazva, csak baromi felrevezeto az indentalas
viszont a cikluson belul ugyanolyan nevvel masik valtozo, az megvan[ Szerkesztve ]
-
Hiftu
senior tag
Valami ilyesmit irnék main()-be.
Remélem nem irtam el semmit.
int main()
{
int i,j;
do
{
cout << " \n Tanulok szama: \t";
cin >> i;
}
while (i <= 0); //legalabb 1 tanulo adatat fel kellene vinni
tanulo* t = new tanulo[i]; //csinalunk tombot az adatoknak.
for (j=0;j<i;++j)
{
cout << "\n Nev: \t";
cin >> t[j].nev;
cout << "\n Jegy: \t";
cin >> t[j].jegy;
}
for (j=0;j<i;++j)
{
cout << "\n" << t[j].nev << "\t";
cout << "\n" << t[j].jegy << "\t";
}
cin.get();
cin.get();
delete[] t; //eldobjuk a lefoglalt memoriat
return 0;
}[ Szerkesztve ]
Tessék mondani, lehet itt hazudni? - Kaszt: Decker, Faj: Troll, Működési Terület: Prohardver
-
Jhonny06
veterán
Ez a kód szerepelt egy junior c++ fejlesztő állás interjúkérdései között, hogy miért rossz:
char* x;
const char** y = &xGondolkoztam rajta, hogy konstans mutató nem kaphat új memóriacímet, de az inicializálásnál ez nem lehetne gond.
-
Jester01
veterán
válasz Jhonny06 #1311 üzenetére
Itt ugye nem a pointer a konstans, hanem amire a legvégén mutat (dupla indirekció után), vagyis **y nem írható.
Ez például konstans mutató és teljesen szabályos, az y maga a konstans, vagyis y nem írható:
char** const y = &x;Ez is szabályos, itt az a konstans amire az y mutat, vagyis *y nem írható:
char* const *y = &x;Jester
-
Jhonny06
veterán
válasz Jester01 #1316 üzenetére
Igazából azt nem értettem, hogy akkor mi is a hiba az eredetileg írt kóddal (lehet, hogy benne volt a válasz, csak nem értem):
char* x;
const char** y = &xTehát ha az y nem tudja dupla indirekcióval megváltoztatni azt az értéket, amire az x mutat (illetve címet, most mindegy), akkor követelmény, hogy az x se tudja megváltoztatni, azaz azt is konstansként kell deklarálni, nem? Tehát nem lenne értelme annak (illetve helytelen lenne), ha az y az x-en keresztül nem tudná megváltoztatni, az x viszont igen. Erre jutottam.
[ Szerkesztve ]
-
Jhonny06
veterán
Konkrétan az volt a kérdés (egy külföldi fórumon találtam) az interjún, hogy miért rossz, tehát rossz. Amúgy le se fordul a kód, ha kipróbálod, tehát tuti az. char** és const char** közötti konverzióról panaszkodik. Ezért próbálom megfejteni, hogy mi a magyarázat, a megoldás egyértelmű, csak nem sokat ér, ha nem értem, hogy miért.
-
Jester01
veterán
válasz Jhonny06 #1317 üzenetére
Igen, ez már közelít az igazsághoz. A fenti kód önmagában még nem lenne baj, vagyis az, hogy az x tudja írni az y viszont nem, az még nem probléma, millió olyan eset van amikor különböző pointereken keresztül különböző elérésed van, például:
char c;
char* x = &c;
const char* y = &c;Ezzel semmi baj, x-en keresztül lehet írni, y-on nem.
A gond ott kezdődik, hogy az említett struktúra módot adna olyan konverzióra aminek során a const elveszik egy pointerből. Látszólag ugye itt éppen hozzáadódik és ez biztonságosnak tűnik, de valójában egy kiskaput nyit:
char* x;
const char** y = &x;
const char* z;
*y = z;
*x = 0;Itt a z pointerről leszedtük a const-ot és az x-en keresztül olyan címre írtunk amire nincs felhatalmazásunk. Ugye *y típusa const char* és z is ez, tehát a *y = z rendben van. Viszont mivel y=&x ezért most már x is ugyanoda mutat ahová z, csak x nem const vagyis *x írható.
Mégegyszer hangsúlyoznám, nem az a baj, hogy több pointer ugyanazt a címet különböző módon éri el, hanem az, hogy egy tetszőleges const pointerből írhatót lehetne varázsolni. (Persze egy cast-tal ezt még mindig meg lehet tenni de az már más kérdés.)
Jester
-
válasz Jhonny06 #1311 üzenetére
izé, ezzel nem az a baj, hogy a második sor jobb oldala char típusú, a jobb oldalar meg char**?
egy char** meg persze hogy nem lehet egyelővé tenni egy charral. na és valszeg ezért panaszkodik a típuskonverzióra a compiler. a visual studio szokott adni errort is, abból is ezt elvileg ki lehetne bogarászni.
a const nem zavarhat be, az csak annyit jelenthet, hogy az y értéken keresztül az x nem megváltoztatható szvsz, legalábbis funkciólnál ez így van. egyébként meg ilyen kód szerintem valós esetben classon belül nem igazán fordulhat elő. ha ez nem így van, akkor is max azt jelenti, hogy a pointer értéke nem változtatható, de az se csinálhat compiler típus errort.
vagy a harmadik ötlet: ez így design szempointból szerintem minimum fura, minek constanssá tenni egy pointert, amikor class scopeon belül azért ennyire a dolgokat szerintem nem kell védeni (illetve ha kell az már bőven régen rossz, meg amúgy sem ér semmit mert úgyis kiszedhető ez a kódrész is, ha más hozzáfér), ha meg class scopeon kívülre akarja az ember használni, akkor úgyis kell egy funkció, akinél pedig egyszerűbb írni egy constantot a funkcióra. szóval értelme ennek így semmi.
[ Szerkesztve ]
Don't dream it, be it. // Lagom amount.
-
válasz WonderCSabo #1324 üzenetére
sztornó, elnéztem.
na, akkor most nézem meg a hibaüzenetet.
ok, legegyszerűbb megoldás: hiányzó ; a második sor végén? ha nem az, akkor
"cannot convert from 'char **' to 'const char **'"
mégiscsak a const a hibás.
char** const y = &x működik
const char* x;
const char** y = &x;
szintén.[ Szerkesztve ]
Don't dream it, be it. // Lagom amount.
-
Jhonny06
veterán
válasz Jester01 #1321 üzenetére
Mondjuk nem tudom, hogy mire kell felhívni a figyelmet, amikor a fordító szól érte és egyértelműen le se fut a kód, csak úgy, ha az x-et is konstansként deklaráljuk, akkor pedig már nem lehet trükközni. Sok ilyen dolog van a C-ben, ami egyértelműen kerülendő és észrevehető, ha másért nem, akkor azért, mert nem fut le.
-
-
n00n
őstag
Sziasztok!
Kerestem a fórumban és láttam, hogy volt már ilyen téma, de nem túl frissek a válaszok, így feltenném újból, ha nem probléma, hátha azóta változtak a dolgok.
Szeretnék megtanulni C++ nyelven programozni, ehhez milyen könyvet ajánlanátok? A könnyebb válaszoláshoz leírnám az eddig ismereteimet. Középiskolában tanultam 4 évig Turbo Pascalt, majd saját szorgalomból elkezdtem Python-nal foglalkozni. Kisebb játékokat, illetve programokat írtam, de semmi komoly. A főiskolán előző félévben tanultam C programozást. Ott az alapokat vettük át, illetve tömbök, függvények, rekurzió stb. (Objektum orientált szemléletet nem vettük). Idén a C#-ot fogjuk venni nagy bánatomra (tavaly még C++-t tanítottak, de azóta új tanár). Viszont az a nyelv egyáltalán nem érdekel. Linuxot használok lassan 7-8 éve, így valószínűleg azon is szeretnék programozni, így számomra egyértelmű választás a C++. Ezek alapján milyen könyvet ajánlotok? Szeretnék vele lehetőleg minden nap foglalkozni, hogy egy fél év után legalább olyan szintre elérjek, hogy bele tudjak bátran piszkálni egy-két nyílt forráskódú projekt fejlesztésébe tapasztalat szerzési jelleggel.
-
n00n
őstag
Köszi. Gyorsan átfutottam, nem tűnik rossznak.
Viszont most beszéltem egy kollégámmal, aki mondta, hogy van egy könyve, odaadta.
Ez az:
Bjarne Stroustrup: The C++ Programming Language Special EditionViszont erről azt olvastam, hogy inkább már haladó szintű programozóknak ajánlott. Szerintetek ennyi tapasztalattal neki állhatok vagy keresek valami kezdőbb nyelvezetűt?
-
sghc_toma
senior tag
-
az tényleg túlzás. Bjarnenek van egy másik könyve is, a Programming Paradigms and Principles in C++. Kezdőknek az egy fokkal jobb, de ott is érződik, hogy amerikában oldalra fizetik a szerzőt és néha szó szerint elveszik a részletekben (bevezetőt és a kezdeti éveket nyugodtan át lehet ugrani, egyenesen a hello wordig). viszont ha van sok időd, jó lehet, minden fejezethez van több oldalas önkontroll, hogy mit érdemes lekódolni.
Computerbooksnak volt egy programozzunk c++ nyelvenje, az tömör, viszont eléggé átgondolatlan a felépítése (kezdő abból nem fog megtanulni kódolni).
Don't dream it, be it. // Lagom amount.
-
n00n
őstag
válasz proci985 #1338 üzenetére
Most kaptam kölcsön egy másik kollégától a 24 óra alatt szériás C++ könyvet. Hát eléggé fenntartással kezelem ennek a szériának a könyveit, de egyelőre nincs jobb, így belekezdek és, ha az első fejezetek (amikkel tisztában vagyok) nem tetszenek nem folytatom. Köszi a javaslatokat, csekkolom azokat is.
-
n00n
őstag
válasz Jhonny06 #1340 üzenetére
Kezdőnek azért nem nevezném magamat, inkább a haladó előtt egy kicsivel elhelyezkedő tudásúnak.
Egyébként neki estem a könyvnek. A 141. oldalon tartok, eddig nem sok újat mondott, de azok hasznosak voltak. Amit nagyon hiányolok a fejezetek végéről megírandó feladatok. Van néhány ilyen "módosítsa a kódrészletet így, meg így". De ezek elég gyenguszok.
Tudtok olyan oldalt, ahol egyszerűbbtől indulva folyamosan egyre bonyolultabb C++ programokra vannak példák?
-
n00n
őstag
válasz WonderCSabo #1342 üzenetére
Köszi, az első fele könnyű, de utánna már vannak számomra nehezebbek is.
-
doc
nagyúr
válasz WonderCSabo #1342 üzenetére
ezekkel az a baj, hogy pont az objektumorientalt feladatok hianyoznak...
-
-
n00n
őstag
Sziasztok!
Milyen GUI-val érdemes foglalkozni, ha platform független programot akarok írni? QT, GTK? Valami nagyon pehelysúlyú kellene. Ubuntu 11.10-en írnám meg és XP-n lenne használva.
-
n00n
őstag
Na tegnap kicsit utána néztem mindkettőnek, a Qt szimpatikusabb, plusz elég valószínű, hogy ez lesz a jövő. Nem is véletlen, hogy az Ubuntu is kacérkodik a Qt-re váltás ötletével.
A 24 óra alatt könyv kb felét kiveséztem. Vannak pozitív tapasztalatok és negatívak is vele kapcsolatban. Van amit kifejezetten jól, szájbarágósan magyaráz, van amit azért nem visz túlzásba. Plusz ezek a macskás példák nekem se fekszenek.
-
n00n
őstag
Nem vált rá. Ne forgasd ki a szavaimat. Csak kacérkodott a gondolattal. Megjelent ez a cikk és ezután egy interjúban kérdezték, hogy van-e esélye, hogy Qt-re váltanak, azt mondta Mark, hogy megeshet.
Macskás példán keresztül kezdi el az osztályokat magyarázni. Hogy vannak privát változói (életkora), meg publikus függvényei (életkor módosítás, életkor lekérése, !nyávogás! ) meg ilyenek. Egy másik helyen talált autós példák sokkal közelebb állnak hozzám.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- CTO ÚJ Bontatlan MacBook Pro 16 M3 Pro 12CPU/18GPU 18GB/1TB SSD Magyar billentyűzet Azonnal átvehető
- ÚJ BONTATLAN Apple Watch Series 8 S8 41-45mm Azonnal Átvehető DEÁK TÉRNÉL 1 Év Apple Garanciával.
- Új APPLE AIRPODS PRO 2 GEN USB-C bontatlan aktiválatlan 1 év garancia AZONNAL ÁTVEHETŐ Deák Térnél.
- BONTATLAN Új Iphone 15 és 15 Plus 128-512GB 1év APPLE garancia gyári független Deák AZONNAL Átvehető
- BONTATLAN Új Ipad 2022 10th Minden szín 1 év hivatalos Apple Garancia AZONNAL ÁTVEHETŐ DEÁK TÉRNÉL.
- Limitált! Spider Man 2 PS5 Cover + Kontroller ajándék VR2 Sense töltőállomással LEGOLCSÓBBAN A NETEN
- RaidSonic Icy Box IB-DK2241AC
- Asus p5K , Xeon E5450 Core 2 Quad 9650, 4x2GB Kingstone Hyper X 1066Mhz, Geforce Gtx 570
- Használt HP Laptop Billentyűzetek legolcsóbban.
- újszerű - ASUS TUF Gaming B760M-PLUS Alaplap - Garancia - Ingyen Posta