- Motorola Edge 50 Neo - az egyensúly gyengesége
- Samsung Galaxy Watch7 - kötelező kör
- Google Pixel topik
- Telekom mobilszolgáltatások
- Hívószám-hamisítás
- Youtube Android alkalmazás alternatívák reklámszűréssel / videók letöltése
- Mi nincs, grafén akku van: itt a Xiaomi 11T és 11T Pro
- Nokia 8 Sirocco - tudja, honnan fúj a szél
- Samsung Galaxy A53 5G - kevesebbet többért
- Akciófigyelő: Jelentősen olcsóbban nyit az Ulefone új mindenese
Új hozzászólás Aktív témák
-
Z_A_P
addikt
1
A screenshotban nem
for (Egitest* b : EgitestLista) {
van, hanem
Egitest b - csilag nelkul.2
typeid(Bolygo) == typeid(b)
Ilyet nem hasznalunk, helyette dyamic_cast<>, ami NULL-t ad vissza ha nem sikerult a cast. Termeszetesen pointert/referenciat hasznalunk.3
Az egesz kod buzlik, ha a listadban Egitest van, es azon kell ilyeneket futtatni, akkor inkabb az Egitest classban kellene egy virtualis GetKeringesiTavolsag().+1
Borzaszto stilus a magyar/angol keveres "GetKeringesiTavolsag"
Hasznalj 100%-ban CSAK angol neveket, minding mindenre.
Ezzel csak nyerhetsz, meghozza sokat. -
mgoogyi
senior tag
A screenshotodban nem pointered van, hanem normál objektumod.
Gondolom a listáddal is ugyanaz a helyzet.Ezzel az a baj, ha csinász egy ilyet, hogy:
Bolygo b;
Egitest e;
e = b; // az EgitestHozzaad-nál gyakorlatilag ezt csinálodEzesetben az "e" egy ledarált Egitest méretű változó lesz, amit a "b" égitestből örökölt részei adnak.
Ez az egész castolás téma akkor nyerhet értelmet, ha pointert vagy ref-et castolsz.
Látom c# háttered van.
C++-ban a normál értékadás by value megy összetett típusokra is, amit pl. az EgitestHozzaad függvény bemenő paraméternél történik. (Kb. mint a struct c#-ban)
Ez azt jelenti, hogy mindig egy másolat változóba megy az adat, amibe vagy copy konstruktorral vagy = operatorral kerül be az adat.A a = b; // copy ctor
a = b; // = operatorHa ki akarod használni a polimorfizmust, akkor vagy referenciákkal vagy pointerekkel kell dolgoznod.
A * a / A & aMiért akarsz visszacastolni bolygóra? Nem azért tartod közös kollekcióban az objektumokat, hogy mind ugyanúgy kezelhesd a közös interfaceükön keresztül?
-
Silεncε
őstag
Az úgy szerintem nem lesz jó, hogy egy Bolygó típusú változónak egy Bolygó*-ot akarsz átadni. Ha emlékezetem nem csal, C++-ban működik, hogy (Bolygó*), de nem vagyok benne biztos.
Egyébként a VS az aláhúzás mellé magyarázatot is ad, azt is beírhatnád ide, valszeg hamarabb jönne válasz
-
amdni
aktív tag
Leírnám újra hátha nem vagyok egyértelmű:
van egy egitest típus
továbbá bolygó és csillag típus, ezeknek az őse az egitest.
Egy listában szeretnék őket tárolni.
list<egietst> lista;Szeretném kiolvasáskor megállapítani hogy pl. bolygó-e, és utána kasztolni az eredeti típusra, de nem tudom megoldani, alá van húzva a "b" betű.
bolygo temp;
for (Egitest* b : EgitestLista) {
if (typeid(Bolygo) == typeid(b)) {
temp = dynamic_cast<Bolygo*>(b); //itt a hiba! -
dabadab
titán
Erre van a typeid:
if ( typeid(*b) == typeid(bolygo) ) {
// ....
}C++-ban egyébként szerintem nem jó ötlet C-s pointereket alkalmazni: a legtöbb esetben egyáltalán nem kell pointer (főleg mióta van move semantics), a maradék nagy részében referenciákat lehet használni, ami meg ezek után is megmarad, ott meg a C++-os smart pointereket.
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Motorola Edge 50 Neo - az egyensúly gyengesége
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Renault, Dacia topik
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Sweet.tv - internetes TV
- Samsung Galaxy Watch7 - kötelező kör
- Kerékpárosok, bringások ide!
- Allegro vélemények - tapasztalatok
- Scum
- Hardcore café
- További aktív témák...
- Intel Core Ultra 7 265 /// Bontatlan, Teljesen Új // Üzletből, Számlával és Garanciával
- Csere-Beszámítás! Ryzen 9 9950X Processzor!
- Újszerű Gamer Asztali PC Számítógép 2026-ig Garis ASUS H510M-K R2.0 i5 11400F RTX 4060 8GB Dobozába
- Samsung Galaxy Tab A8 (2021) , 3/32 GB,
- Samsung Galaxy S6 Lite (2022) , 4/64 GB ,Wi-fi
- Samsung Galaxy Xcover 6 Pro, 6/128 GB, Kártyafüggetlen
- Felújított laptopok Számlával, garanciával! Ingyen Foxpost!
- AKCIÓ! Gigabyte B450M R7 2700X 16GB DDR4 512GB SSD RX VEGA64 8GB CM 690 III FSP 600W
- Apple Ipad Pro 2 gen2 10,5" 2K retina A1709 64GB
- LG 27CN650N-6A - Felhő Monitor - 1920x1080 FHD - 75Hz 5ms - USB Type-C - Quad Core - BT + WiFi
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest