- Út Korea turistaparadicsomába, amiről talán még sosem hallottál: Csedzsu-sziget
- Perplexity Pro AI képszerkesztési limit -egy képgenerátor függő tapasztalatai
- Adattár lemez előkészítése Windows telepítéshez
- Jelszóvédett IBM Thinkpad R50e működőképessé tétele.
- ATK Blazing Sky X1 Ultimate Metallic Red gamer egér
- Kempingezés és sátrazás
- sziku69: Fűzzük össze a szavakat :)
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sellerbuyer: Milyen mobiltelefont vegyek 2025 ben?
- Luck Dragon: Asszociációs játék. :)
- eBay-es kütyük kis pénzért
- SzDavid99: Út Korea turistaparadicsomába, amiről talán még sosem hallottál: Csedzsu-sziget
- Elektromos rásegítésű kerékpárok
- sziku69: Szólánc.
Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
EQMontoya #3073 üzenetére
"Amivel olvasol (legyen source), az legyen egy külön osztály, valami interface-szel. Ebből lehet leszarmaztatni sok félét"
Ezzel ugyan az a gond, mint az én megoldásomban. Az interface hogyan kapja meg a forrástól a blob-ot? A leszármazott osztály ctor-ának ugyanúgy meg kell hívni az intarface egy nem virtuális init_blob tfv.-ét, amivel ezt megteszi. Az interface-nek nem lehet a blob beolvasásra virtuális tfv.-e, mert a források különböző paraméterezést igényelnének erre (másrészt az interface ctor-ából nem szokás virtuális tfv.-t hívni). De ha lehetne is virtuális tfv.-e a forrás beolvasására, akkor is előbb létre kéne hozni az objektumot, majd meghívni rá a virtuális read-et (kétfázisú inicializálás). Gondolom az interface itt sem lenne példányosítható (hiszen ezért interface).
Valahogy így gondoltad?class SourceRead{
public:
SourceRead():blob_ptr(0),blob_length(0){}
bool read(){
return read_blob(&blob_ptr,&blob_length);
}
virtual ~SourceRead()=0{}
void * get_blob_ptr(){return blob_ptr;}
DWORD get_blob_length(){return blob_length;}
private:
virtual bool read_blob(void **blob_ptr,DWORD *blob_length)=0;
void *blob_ptr;
DWORD blob_length;
};
class SourceReadFile : public SourceRead{
public:
SourceReadFile(const std::string & source_name):source_name(source_name){}
~SourceReadFile(){/*megnyitott fajl lezarasa, allokalt memoria felszabaditasa*/}
private:
virtual bool read_blob(void **blob_ptr,DWORD *blob_length){
//source_name forras megnyitasa,beolvasando meret meghatarozasa, *blob_ptr=allokalt memoria cime,blob_length=merete
return true;
}
const std::string & source_name;
};
class BlobProcess{
public:
BlobProcess(std::shared_ptr<SourceRead> sp):source_read_shared_ptr(sp){process_blob(sp->get_blob_ptr(),sp->get_blob_length);}
private:
void process_blob(void *,DWORD);
std::shared_ptr<SourceRead> source_read_shared_ptr;
};
void main(){
auto source_read_file=std::make_shared<SourceReadFile>(new SourceReadFile("blob_file"));
source_read_file->read(); //ketfazisu inicializalas
BlobProcess blob_process(source_read_file);
}És itt már nem 2, hanem 3 osztály van, meg shared_ptr (tényleg! miért nem unique_ptr), amit nagyon nem szívesen használok. Ezzel szembem nálam 2 osztály van, amiből csak 1-et kell példányosítani, és nincs shared_ptr (sem_unique_ptr).
Ú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!
- Android alkalmazások - szoftver kibeszélő topik
- Motoros topic
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Fel kell készülnünk a 2G kivezetésére
- Milyen házat vegyek?
- iPhone topik
- Kertészet, mezőgazdaság topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Kezdő fotósok digitális fényképei
- Borderlands 4
- További aktív témák...
- Gaming Set-Up eladó 3090 32GB 4000MHz CL18 M.2 SSD 1TB (újrapasztázott minden)
- 4K Gamer PC - i9 - vízhűtés - RTX 4090 - 48GB RAM
- Ritkaság eladó!!! i5-5675c Iris pro grafikus maggal.
- Szép! Lenovo Thinkpad T14 G3 "Golyóálló" Üzleti Laptop 14" -50% i5-1250P 12Mag 16GB/512GB FHD+ IPS
- Lenovo ThinkPad T14 Gen 1 - Ryzen 5 Pro 4650U, 16GB RAM, 512GB NVMe SSD - Szépséghibával, áron alul!
- HP 65W töltő eladó
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 Pro 24GB RAM 512GB SSD macbook garanciával hibátlan működéssel
- Lenovo V130-15IGM laptop (Pentium Silver N5000/8GB/256GB SSD
- Bomba ár! HP ProBook 6570B - i5-3GEN I 4GB I 320GB I 15,6" HD+ I Cam I W10 I Garancia!
- MINI PC HP PRODESK 600 G2 600G2: i3-6300T gar. Budapest MPL Foxpost
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest