- ASUS routerek
- Hálózati / IP kamera
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Óriási trösztellenes botrány lenne, ha a Qualcomm megvenné az Intelt
- Microsoft Excel topic
- Elnyomja a riválisokat a Visa, beperelte az USA
- Otthoni hálózat és internet megosztás
- Gondoskodik róla az EU, hogy az Apple felnyissa a rendszereit
- QNAP hálózati adattárolók (NAS)
- Bittorrent topik
Új hozzászólás Aktív témák
-
nagyúr
Sziasztok! Hibás ez a kód, mit nem veszek észre?
#ifndef SL__H
#define SL__H
#include <list>
#include <algorithm>
template<class T, class Comp = std::less<T>>
class SortedList{
std::list<T> lt;
public:
int size() const{
return lt.size();
}
void insert(const T& t){
lt.insert(std::lower_bound(lt.begin(),lt.end(),t,Comp()), t);
}
const T& front() const{
return lt.front();
}
};
#endifHibaüzi:
sl.h:7:32: error: expected type-specifier
template<class T, class Comp = std::less<T>>
^
sl.h:7:32: error: expected '>'
sl.h:8:17: error: expected unqualified-id before '{' token
class SortedList{[ Szerkesztve ]
-
dobragab
addikt
Van egy tippem. Ezt írtad:
template<class T, class Comp = std::less<T>>
Az utolsó két karakter a C++98 parsing szabályok alapján (mohó algoritmus) egy jobbra shiftelő operátor. Tegyél közé egy szóközt, így:
template<class T, class Comp = std::less<T> >
Amúgy ez gyakorlatilag egy hiba a C++98 szabványban, C++11 szerint a felső változat is jó.
Másik hiba: az
std::less
nincs benne sem alist
, sem azalgorithm
header-ben,functional
kell hozzá.Szerk: látom, közben megtaláltad.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
dobragab
addikt
I'll just leave this here.
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
dabadab
titán
válasz dobragab #3555 üzenetére
Ken Thompson üdvözletét küldi
(#3556) tboy93: Ez ellen nem véd.
[ Szerkesztve ]
DRM is theft
-
dobragab
addikt
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
-
dobragab
addikt
Az az Enforcement priceless.
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
sztanozs
veterán
válasz dobragab #3564 üzenetére
Ez még jobban tetszik:
NL.7: Make the length of a name roughly proportional to the length of its scope
Rationale: ???
Example: ???
Enforcement: ???
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
ToMmY_hun
senior tag
Sziasztok!
Olvasok egy C++ könyvet, és felmerült bennem egy kérdés, amire gyors keresés után nem találtam választ. Az lenne a kérdés, hogy mi a különbség egy tagváltozó "const static" illetve "const" definiálása között. A "const" csak a változó állandó értékéért felel, míg a "static" azért, hogy csak egy példány jöjjön létre?
Köszi előre is!
C programmers never die, they are just cast into void.
-
EQMontoya
veterán
válasz ToMmY_hun #3567 üzenetére
A "const" csak a változó állandó értékéért felel, míg a "static" azért, hogy csak egy példány jöjjön létre?
Pontosan.
Ha const tagja van, az az jelenti, hogy csak konstruktorban kaphat értéket, de több példánynak lehet különböző értékű ilyen tagja.
Ha static, akkor minden példány ugyanazt az egyet példányt látja az adott tagváltozóból, ami kvázi a program indulásánál kap értéket.Same rules apply!
-
dabadab
titán
A Stroustroup könyvnek meg az Effective C++-nak kb. semmi köze nincs egymáshoz.
Az egyik leírja, hogy mit tud a nyelv, a másik meg egy receptgyűjtemény, hogy mit hogyan érdemes használni és mire kell figyelni (és ez feltételezi azt, hogy az ember azért nagyjából már tudja, hogy mit tud a nyelv).
DRM is theft
-
EQMontoya
veterán
valami t = (j + 946684800000000000LL) / 1000000000LL;
Aki először megmondja, hogy mi ez, az vendégem egy csatos bambira.
[ Szerkesztve ]
Same rules apply!
-
dobragab
addikt
Feladat: Deklaráld, vagy ne deklaráld a szükséges típusokat, változókat, hogy az alábbi program szintaktikailag helyes legyen.
Hint: egynél több jó megoldás van.
// deklaraciok
int main()
{
A * B;
C<D>::E * X;
}[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
dobragab
addikt
válasz jattila48 #3579 üzenetére
Akkor a tobbi megoldas, termeszetesen nem csak a definialt tipusban ternek el, hanem elvi kulonbseg van.
2.
int A, B;
A * B; // eldobjuk a visszateresi erteket
typedef int D;
template<typename T>
struct C
{
int E;
};
int X;
C<D>::E * X;3. Talan ez faj legjobban. Szintaktikailag ez is helyes.
int C, D, E, X;
C<D>::E * X;[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
jattila48
aktív tag
válasz dobragab #3581 üzenetére
Ez így biztos, hogy hibás.
A C<D>::E nem típusnév, és nem is statikus tag. Az int X deklarációból ítélve szerintem static int E-t akartál írni. Honnan van ez a feladat? Mert finoman szólva is butácska (és értelmetlen).„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
dobragab
addikt
válasz jattila48 #3582 üzenetére
Igen, az
static int E
akart lenni.Ha masra nem, arra mindenkepp jo, hogy a
typename
kulcsszot megtanulod becsulni, sot orulsz neki, hogy csak ennyi helyen kell kirakni, mert legtobbszor ki tudja talalni a fordito.(#3583) kispx
Az elsot tenyleg elcsesztem.
Masodik esetben vigyazz, a
::E
global scope.[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
pvt.peter
őstag
Sziasztok,
Arra van vmiféle lehetőség, hogy egy
switch
utasításban levő ágakat megszámoljam fordítási időben és ha nem egyenlő egy bizonyos számmal akkor error -t dobjak?
Arról van szó, hogy van egyQMap<int, QString>
változóm amelyben <hibakód, hibaüzenet> -eket tárolok.switch
utasításban pedig adott egész szám alapján kérek le hibaüzenetet.
A probléma az, hogy ha nincs olyancase
ág amely alapján letudna kérniQString
-et aQMap
-ből akkor nem fog visszaadni semmit sem (default
ág, stb.).Emiatt elsősorban a
case
ágak számát szeretném ellenőrizni aQMap
méretével. Amennyiben nem egyeznek meg, akkor vmi baki van.Másodsorban a precízebb megoldás az lenne, hogy a
case
ágak feltételeit ellenőrizném le, hogy benne vannak-e aQMap
-ben kulcsként.Nyilván a fentebbi igényeket el lehet végezni unit tesztekkel is, sőt igazából ezzel kellene.
A kérdésem viszont most fordítási időre vonatkozna és vmi statikus assertes dolgot keresnék erre.
Előre is köszönöm a választ.
[ Szerkesztve ]
Ez egy .50-es rombolópuska, elég szép visszarúgással.
-
ny.erno
tag
Hogy szakmai, az szinte biztos, de h a programozás melyik nyelvéhez tartozik, ezt nem tudom eldönteni.. Hallotátok/tudok róla?
Mik ezek a robotok és milyen "feladatokat" lehet rájuk bízni?
Mondta a srác is, h nem ő csinálta, ő csak bérli.. Ezt pontosan hogyan kell elképzelni?
/Nem az jutott eszembe, hogy most akkor laikusként bérlek mindenre robot, már ha van ilyen, hanem csak érdekel a dolog, szóval akinek van ideje akár linkelni, akár írni rá magyarázatot, az tök szuper lenne. / -
dobragab
addikt
Szerintem az egysoros fuggvenybe bezsufolt hibak szamat ezzel sikerult maximalizalnia az elkovetonek.
bool static getValue(const MsgType* pMsg, std::string tag, std::string& value)
{
return pMsg->getPair(tag, value);
}Mindezt hasznalja egyetlen helyen:
boost::bind(&getValue, &msg, _1, _2);
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
jattila48
aktív tag
Egy vektorban szeretnék különböző típusú objektumokat tárolni. Ezt nyilván nem lehet, ezért a tárolandó objektumok osztályai egy közös őstől származnak, ami csak a konkrét leszármazott típusra utaló enum mezőt tartalmaz. Az objektumokat new-val hozom létre, és a pointereket (mint ősre mutató pointer) tárolom el a vektorban. Igazából unique_ptr-eket tárolok, de ez most lényegtelen (std::vector<std::unique_ptr<Base> >). Amikor a vektor egy elemére hivatkozok, akkor az adott unique_ptr-ből nyert raw pointert kapom vissza, amit a típusmezőnek megfelelően futás időben static_cast-olok a konkrét leszármazott típusra. Ezzel az a baj, hogy állandóan vizsgálni kell a típusmezőt, és elvégezni a static_cast-ot. Van-e ennek jobb megoldása? (Boost-ot nem használok, ezt ne is javasoljátok).
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
dobragab
addikt
-
jattila48
aktív tag
válasz dobragab #3593 üzenetére
Erre gondoltam, de mit adjon vissza a virtuális fv.? A konkrét típusú this pointert (kovariáns típus)? Az nem jó. Más virtuális fv.-t meg nem lehet bevezetni, mert amúgy a típusok teljesen különbözőek. Az egyiken elvégezhető művelet értelmezhetetlen a másikon. Ebben az esetben mit csináljon a virtuális fv,? Exception-t dobjon? Vagy esetleg az ősbeli pure virtual-nak legyen törzse, ami exception-t dob, ha meghívódik? Másrészt az ősosztályban fel kéne venni virtuális fv.-ekként az egyes konkrét osztályokon értelmezhető műveletek unióját. Vagy rosszul értem, amit írtál?
[ Szerkesztve ]
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
dobragab
addikt
válasz jattila48 #3594 üzenetére
Erős tervezési hiba-szagot érzek. Ha semmi közük egymáshoz, akkor nem biztos, hogy egy vektorban kéne lenniük, és együtt is kell bejárni, de a konkrét probléma ismeretében nem merem egyértelműen állítani.
A visitor pattern szerintem jó lesz ide.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
jattila48
aktív tag
válasz dobragab #3595 üzenetére
Konkrétan ez egy interpreter szimbólum táblája. Lehet benne változó név, típus név, foglalt kulcsszó, függvény név, stb. A konkrét típustól függetlenül, az adott scope-ban nem lehetnek egyező nevű szimbólumok, akkor sem, ha különböző típusúak. Ezért kell őket egy vektorban tárolni, hogy ezt ellenőrizni lehessen. Még csak neve sincs minden szimbólumnak. A változó pl. teljesen másképp kezelendő, mint a típus definíció. Nem hiszem, hogy ez tervezési hiba lenne.
[ Szerkesztve ]
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
dobragab
addikt
válasz jattila48 #3596 üzenetére
Elsőre nem látom az okát, miért kell egy vektorban lenniük, miért nem lehetnek külön tárolva. Jó, még nem írtam interpretert. A brainfuck nem számít.
Mik a szimbólumokon végzendő műveletek?
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
jattila48
aktív tag
válasz dobragab #3597 üzenetére
Ez most egy kicsit bonyolult, de pl. változó esetén a stack-en elfoglalt helyét, az érték típusát, és a statikus level-t tartalmazza. Függvény esetében a fv.-tábla-beli pozíciót, paraméterek számát, típusát, stb. Osztály definíció esetén ...elég bonyolult. A lényeg, hogy teljesen mások a szimbólumok, viszont a scope kezelés miatt egy vektorban (igazából stack-ben) kell őket tárolni.
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
jattila48
aktív tag
válasz dobragab #3597 üzenetére
Hát akkor marad a típus vizsgálat, static_cast. Nem tudok jobbat. A típusvizsgálatot virtuális fv. használatakor sem lehet elkerülni, hiszen a konkrét típus ismeretében tudom csak eldönteni, hogy meghívjam-e egyáltalán a virtuális fv.-t (ami ráadásul a többi osztályban esetleg nincs is implementálva). Ez után a static_cast már csak a fordítót terheli, a futást nem, szemben a virtuális fv. hívással.
A különböző típusok külön táblázatban való tárolása nem opció, mert nagyon megnehezíti a szimbólum hozzáadást, -keresést, scope kezelést, ráadásul ezeket a fv.-eket át kell írni, ha új típusú szimbólumot vezetnék be. Ez egy olyan példa, hogy noha a tárolandó osztályoknak látszólag nem sok közük van egymáshoz, mégis más okból (scope-ban nem lehetnek azonos nevű szimbólumok) célszerű őket együtt tárolni. Szóval szerintem nem tervezési hiba. A külön táblázatok viszont az lenne.„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
mgoogyi
senior tag
válasz jattila48 #3599 üzenetére
Vektorban ismétléseket keresni nem annyira hatékony. Vagy arra alapozol, hogy úgyis alacsony lesz az elemszám egy adott scope-ra?
Alapból nem tűnik jó ötletnek vektorba berakni egy csomó castolni való cuccot.Valszeg többet kellene tudnunk, hogy érdemben hozzá tudjunk szólni a témához.
Jó lenne tudni, hogy mikor mire használod a vektort, mikor van beszúrás, keresés, törlés, stb.
Az objektumok feldolgozása soros módon történik? Teszem azt be lehet rakni mindezt egy process nevű virtuális függvénybe, ami specifikus minden altípusra?
Ú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!
- Ingyen kellene, de tegnapra
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen légkondit a lakásba?
- Asszociációs játék. :)
- Autós topik látogatók beszélgetős, offolós topikja
- Fejhallgató erősítő és DAC topik
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Háztartási gépek
- NOTEBOOK / NETBOOK / Mac beárazás
- Autós topik
- További aktív témák...
- HP OMEN Gamer Tervező Vágó Laptop 15,6" -40% Ryzen 5 5600H 16/512 RTX 3060 6GB FHD 144Hz!
- Intertek CM-118-A1 filteres kávéfőző
- Philips Senseo HD 6553 /59 /f párnás kávéfőző.
- Új Asus Rog Strix G15 Gamer Tervező Laptop 15,6 -30% Brutál Ryzen 7 6800HS 16/512 RTX 3050 FHD 300Hz
- HP OMEN Transcend 14-fb0796ng - ÚJ 14" OLED GAMER notebook - Intel Core Ultra 9 185H, 32GB, RTX 4070
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen