- Milyen billentyűzetet vegyek?
- TCL LCD és LED TV-k
- Milyen videókártyát?
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Amlogic S905, S912 processzoros készülékek
- AMD GPU-k jövője - amit tudni vélünk
- Modern monitorokra köthető 3dfx Voodoo kártya a fészerből
- Vezetékes FEJhallgatók
- XMLTV EPG letöltő progi
- AMD vs. INTEL vs. NVIDIA
Hirdetés
-
Egyre közelebb a Poco F6 startja
ma Újabb ár/érték csatát nyerhet a Xiaomi almárka.
-
Toyota Corolla Touring Sport 2.0 teszt és az autóipar
lo Némi autóipari kitekintés után egy középkategóriás autót mutatok be, ami az észszerűség műhelyében készül.
-
Az NVIDIA szerint a partnereik prémium AI PC-ket kínálnak
ph Megkezdődött az NPU-k elleni hadjárat, de egy fontos részletet nem említ a cég.
Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz EQMontoya #3342 üzenetére
Én 136-ot mondanék futtatás nélkül. Többszörös öröklődésnél a this pointert igazítani kell, amit az ún. thunk kód végez. Erről írtam a pimpl példámnál, amikor hatékonysági okból a forwarding fv. hívásokat member pointer-ekkel helyettesítettem. Ha csak az osztály incomplete deklarációját látja a fordító, akkor nem tudja eldönteni, hogy kell-e this pointer igazítás vagy nem, ezért a legrosszabb esetre készült. Ez volt az a bizonyos assembly kód, amit a VS feltehetőleg rosszul linkelt. Ha azonban a a forward deklarációban közöljük, hogy a szóban forgó osztály _single_inheritance (MS kulcsszó), akkor nem generálja a felesleges thunk kódot, és jól működik. A gcc-nek nem okozott ez problémát, persze az is generálta a thunk kódot.
„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
Napi mitírki ultimate edition. EZT a kódot nézegetve mondta valaki, hogy még lehetne rajta csavarni egyet. Nekiálltam, és olyan jól sikerült, hogy saját magam is meglepődtem az eredményen. Ha bárki megmondja futtatás nélkül az eredményét, vendégem egy sörre, és ezt nyugodtan vehetik fenyegetésnek.
Vigyázat, C++11 intensifies.
#include <iostream>
class printable {};
struct proxy {
std::ostream& os;
proxy(std::ostream& os) :
os(os) {
}
};
proxy operator<<(std::ostream& os, printable p) {
os << "hello";
return proxy(os);
}
int operator,(proxy p, int n) {
p.os << "world" << std::endl;
return n;
}
template <typename... ARGS>
void print(ARGS const &... args)
{
using swallow = int[];
(void) swallow {0, ( (std::cout << args), 0)...};
}
int main()
{
print(printable());
print(1);
return 0;
}[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
dobragab
addikt
válasz EQMontoya #3356 üzenetére
Mosmérlőttedle a poént?
Amúgy azóta sem tudom, miért ez az operator, hívódik, miért nem a beépített, amihez nem kéne típuskonverzió? Ennyire nem ismerem a szabványt
Btw ennél gonoszabbat azóta sem találtam, úgyhogy szégyelld magad!
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
-
dobragab
addikt
válasz EQMontoya #3358 üzenetére
Szerintem nem annak kéne hívódnia.
int operator,(std::ostream&, int) <- ezt a fordító generálta
int operator,(proxy, int) <- ezt én írtamEzek közül szerintem annak kéne hívódnia, amihez nem kell típuskonverzió, jelen esetben az elsőnek. Ha azt akarnám, hogy itt is az enyém hívódjon, akkor felüldefiniálnám ezt:
int operator,(std::ostream&, int) <- már ezt is én írtam
Szóval felül tudom csapni.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
zuzu000
őstag
Sziasztok!
C#-ban próbálok egy wolf3d klónt írni, suliban beadandóhoz kell. Megvan az eredeti forráskód, de c++ tudásom sajna ennyire nincs a topon, hogy minden részét tudjam értelmezni. Egy metódus lenne, ami elég fontos, ha tudnátok segíteni, megköszönném (hogy pontosan mit is csinál)
boolean CheckLine (objtype *ob)
{
int x1,y1,xt1,yt1,x2,y2,xt2,yt2;
int x,y;
int xdist,ydist,xstep,ystep;
int temp;
int partial,delta;
long ltemp;
int xfrac,yfrac,deltafrac;
unsigned value,intercept;
x1 = ob->x >> UNSIGNEDSHIFT; // 1/256 tile precision
y1 = ob->y >> UNSIGNEDSHIFT;
xt1 = x1 >> 8;
yt1 = y1 >> 8;
x2 = plux;
y2 = pluy;
xt2 = player->tilex;
yt2 = player->tiley;
xdist = abs(xt2-xt1);
if (xdist > 0)
{
if (xt2 > xt1)
{
partial = 256-(x1&0xff);
xstep = 1;
}
else
{
partial = x1&0xff;
xstep = -1;
}
deltafrac = abs(x2-x1);
delta = y2-y1;
ltemp = ((long)delta<<8)/deltafrac;
if (ltemp > 0x7fffl)
ystep = 0x7fff;
else if (ltemp < -0x7fffl)
ystep = -0x7fff;
else
ystep = ltemp;
yfrac = y1 + (((long)ystep*partial) >>8);
x = xt1+xstep;
xt2 += xstep;
do
{
y = yfrac>>8;
yfrac += ystep;
value = (unsigned)tilemap[x][y];
x += xstep;
if (!value)
continue;
if (value<128 || value>256)
return false;
//
// see if the door is open enough
//
value &= ~0x80;
intercept = yfrac-ystep/2;
if (intercept>doorposition[value])
return false;
} while (x != xt2);
}
ydist = abs(yt2-yt1);
if (ydist > 0)
{
if (yt2 > yt1)
{
partial = 256-(y1&0xff);
ystep = 1;
}
else
{
partial = y1&0xff;
ystep = -1;
}
deltafrac = abs(y2-y1);
delta = x2-x1;
ltemp = ((long)delta<<8)/deltafrac;
if (ltemp > 0x7fffl)
xstep = 0x7fff;
else if (ltemp < -0x7fffl)
xstep = -0x7fff;
else
xstep = ltemp;
xfrac = x1 + (((long)xstep*partial) >>8);
y = yt1 + ystep;
yt2 += ystep;
do
{
x = xfrac>>8;
xfrac += xstep;
value = (unsigned)tilemap[x][y];
y += ystep;
if (!value)
continue;
if (value<128 || value>256)
return false;
//
// see if the door is open enough
//
value &= ~0x80;
intercept = xfrac-xstep/2;
if (intercept>doorposition[value])
return false;
} while (y != yt2);
}
return true;
}A nagyrésze érthető, de vannak c++ dolgok, amik számomra teljesen ismeretlenek. False-t ad vissza, ha a "vonal" útjában van valami, igazat, ha a kettő obj között semmi nincs.
xt1 = x1 >> 8;
Ez pontosan mit csinál?
Illetve y1&0xff és a többi ilyen rész?
Előre is köszi[ Szerkesztve ]
-
dabadab
titán
Sőt, 16 bites C, Borland C fordítóhoz, merthogy ez az eredeti wolf3d forráskódjából van.
[ Szerkesztve ]
DRM is theft
-
bandi0000
nagyúr
sziasztok
Egy amatőr kérdés, mert egyértelmű választ nem találok rá
double n;
n=(4517/12345)*100;
printf-be akarom kiírni, úgy hogy csak 2 tizedesjegye legyen, és nem tudom hogyan kell, vagyis %.2f-el akartam, de úgy 0,00-át ad mindig
Xbox One: bandymnc
-
dobragab
addikt
-
bandi0000
nagyúr
köszönöm
Xbox One: bandymnc
-
bandi0000
nagyúr
válasz bandi0000 #3374 üzenetére
Még egy kérdés,hogy tiszta legyen érettségire készülök emelt infón, a feladatsorokat csinálom, mind1 is, de beolvasom a txt-t, amibe így vannak az adatok:
Vezetéknév keresztnév párt
na már most, rosszul tudom hogy ha ezt az egészet %s-el akartam volna beolvasni ami később kiderült hogy nem is jó, de a lényeg hogy a %s nem lezáró 0-ig olvas? mert nekem csak úgy olvasta be az egész sport ha úgy adtam meg hogy, %[^\n]\n, így az enterig mindent beolvasott
Xbox One: bandymnc
-
bandi0000
nagyúr
az a baj hogy, így tanították meg nekem, fősulira pályázok, nyilván akkor jobban vagy többet tanulok, de most érettségi előtt úgy akarom csinálni ahogy tudom hogy működik Nyilván mindenre van jobb megoldás de 3 héttel érettségi előtt nem nagyon akarok már új dolgot tanulni, de azért köszönöm
Xbox One: bandymnc
-
EQMontoya
veterán
válasz bandi0000 #3380 üzenetére
de 3 héttel érettségi előtt nem nagyon akarok már új dolgot tanulni, de azért köszönöm
Kb. egy óra megtanulni és tök kényelmesen használható.
Ezt a hozzáállást meg felejsd el sürgősen, egyetemi vizsgákra még a vizsga előtti éjszaka is fogsz újat tanulni! Nah, uzsgyi!
Ha nem megy, kérdezz és segítünk.[ Szerkesztve ]
Same rules apply!
-
-
EQMontoya
veterán
válasz bandi0000 #3382 üzenetére
A scanf egy C-s őskövület szar, amivel igazából csak magadat szopatod, mert amilyen csúnya a szintaxisa, olyannyira kényelmetlen is használni.
Neked pedig ennyire van szükséged:
#include <fstream>
std::ifstream infile("thefile.txt");
std::string line;
while (std::getline(infile, line))
{
//itt a line-ban kapod meg a file aktuális sorát
}Same rules apply!
-
EQMontoya
veterán
válasz bandi0000 #3384 üzenetére
Legyél egy kicsit önállóbb kérlek!
Ez épp a feladatod: kapsz egy stringet, amit szóközök mentén további 3-ra kell bontanod.
Erre elég sok megoldás van, csinálhatsz belőle stringstreamet vagy megcsinálhatod kézzel is a dolgot, semmi nagy okosság nincs benne.[ Szerkesztve ]
Same rules apply!
-
dobragab
addikt
válasz EQMontoya #3385 üzenetére
std::vector<string> split(const string &s, char delim)
{
std::vector<string> elems;
std::stringstream ss(s);
string item;
while (std::getline(ss, item, delim))
elems.push_back(item);
return elems;
}Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
bandi0000
nagyúr
jobb ha megpróbálok utána nézni, mert ezekből amiket írtok semmit nem tudok kivenni, sose láttam még ilyet, úgy hogy keresek valamit és utánanézek ezeknek
Xbox One: bandymnc
-
dobragab
addikt
-
bandi0000
nagyúr
válasz dabadab #3391 üzenetére
Ahha, gyakorlatilag a for, if, scanf, scanf, printf, fprintf, while, do while, ezeket ismerem meg pár függvényt a string.h ból
Meg akarom tanulni ezt de egyedül nehéz, ha meg nem vesznek fel fősulira gyakorlatilag semmit se érnék el vele ha tudnám mert papír nélkül és gyakorlat nélkül úgy se kellenék sehova
Xbox One: bandymnc
-
dabadab
titán
válasz bandi0000 #3393 üzenetére
"Ahha, gyakorlatilag a for, if, scanf, scanf, printf, fprintf, while, do while, ezeket ismerem meg pár függvényt a string.h ból"
Jó, akkor ebből felejtsd el a scanf-t, printf-t meg a string.h-t (oké, a printf-fel gyakran össze lehet futni, más nyelveken is, mert a maga módján roppant kényelmes, de C++-ban az is tele van csapdákkal). Azok a C-hez tartoznak és a népszerű tévhittel ellentétben a C-nek meg a C++-nak, mint nyelvnek, nincs sok köze egymáshoz. C-ben meg ma már alig valaki programoz, az sok szempontból az assembler helyét vette át.
Helyette használd a C++-os megoldásokat, amit az előbb írtak: string és streamek, stream operátorokkal."ha meg nem vesznek fel fősulira gyakorlatilag semmit se érnék el vele ha tudnám mert papír nélkül és gyakorlat nélkül úgy se kellenék sehova"
Programozókra iszonyat kereset van, jóval nagyobb, mint a kínálat. Ha nincs diplomád, az gond lehet a bértárgyaláson, de ha tudsz programozni, akkor találsz állást.
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz bandi0000 #3397 üzenetére
"Én nem látom át a c++-t"
Tizenpár éve programozok benne, de én se merném azt állítani, hogy átlátom De persze a nyelv nagyját viszonylag gyorsan össze lehet szedni, a mindenféle idióta elfajzott eseteket (itt a topikban is volt mostanában pár "na, mit ír ki ez a pár soros program?" kérdés) meg kb. soha De ahhoz, hogy nekiállj programozni meg megérte mások kódját, egyáltalán nem kell reménytelenül sokat tanulni.
Ami a szintaxison túl még nagyon fontos (sőt, igazán ez a fontos), az az, hogy hogyan lehet jól bánni azzal a sok-sok eszközzel, amit a C++ az ember kezébe ad - ezen a téren amit szokás ajánlani, az Scott Meyerstől az Effective C++ - aminek közben lett egy C++11-ről szóló folytatása, az Effective Modern C++ - ez mondjuk nem kifejezetten kezdőknek szóló könyv, mert ahhoz, hogy megértsd a megoldásokat, nem árt ismerni a problémát, amit megoldanak - márpedig itt sokszor olyan problémákról van szó, amik kis programoknál nem jönnek elő, csak nagy projekteknél.
[ Szerkesztve ]
DRM is theft
-
bandi0000
nagyúr
válasz dabadab #3398 üzenetére
Na mind1 valahol el kell kezdeni , azért köszi
Ha nem túl személyes és megkérdezhetem, neked van fősulid? Hogy tanultad meg?Szeretek agyalni a feladatokon nyilván más ilyen érettségi feladattal bohóckodni, de nagyba is az agyalásról szól a dolog gondolom
Xbox One: bandymnc
Ú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!