Kezdőlap › Fórumok › Programozás › C++ kérdések
- This topic has 119 hozzászólás, 19 résztvevő, and was last updated 18 years, 8 months telt el by
tovis.
-
SzerzőBejegyzés
-
2006-06-04-08:57 #2023748kl223 wrote:azt írja, hogy szabálytalan, és szerinte inkább ezt akartam írni:Code:akarmi( akarmi &_src );
ez utóbbi viszont nem hajtódik végre mint copy konstruktor vagy mifene… nemtom… volt ott mindig pár error. Nyilván, ez ugye az cím szerinti átadás, nem ugyanaz.
Mindenképpen így kell írni a másolókonstruktort, ha nem referenciaként kapja, akkor az végtelen ciklust okoz, ugyanis paraméterben konkrét objektum van, ezért neki le kell másolnia, de éppen õ a másoló konstruktor, ezért mégegyszer meghívja önmagát.
De milyen hiba volt a referenciás megvalósításnál?2006-06-04-10:04 #2023749„Mindenképpen így kell írni a másolókonstruktort, ha nem referenciaként kapja, akkor az végtelen ciklust okoz, ugyanis paraméterben konkrét objektum van, ezért neki le kell másolnia, de éppen õ a másoló konstruktor, ezért mégegyszer meghívja önmagát.”
Ez persze nem igaz… meg nem is lenne értelme nem obj címmel létrehozni.
Hogyan is másol?
van egy alap konstruktorunk:Code:akarmi () {
cout << "alap"; this->valtozo = 1;
}meg egy masolo:
Code:akarmi ( akarmi &c ){
cout << "masolo" this->valtozo = c.valtozo;
}akarmi alap; („alap”, alap.valtozo=1)
akarmi copy = alap („copy”, copy.valtozo = alap.valtozo)Ha mûködne nem címmal:
akarmi copy = alap (mivel nem cím itt deklarálódik: „alap”, alap.valtozó, majd „copy”, copy.valtozo = alap.valtozo )Persze nem mûködik, mert egy még nem létezõ objektumot akarunk teljes terjedelmével egy másolni… ami ugye nem megy. Ha pedig a fordító létre akarná hozni, akkor ahhoz elõször az osztályt kéne legenerálnia, ahhoz meg… ördögi kör:) (A cím viszont egy konkrét, mondjuk 32 bites méretû szám, tehát kivitelezhetõ.)
Tehát nem érzéle ez ez semmit… egyszerû fordítási hiba. 🙂
Amúgy se futhatna végtelen ciklusba, hiszen ahhoz az kéne, hogy mindig a copy konst. fusson le, ahhoz meg az kell, hogy minden egyes objektum egy másik paramétereként jelenjen meg (kiv. az elsõt, mert annak az alapnak). Ez nem fog teljesülni, mert az utolsó (itt jelen esetben a második, amit copy-nak neveztem, nem valamely másik függvény paramétereként szerepel… úgy, mint ahogy az alap-nek nevezett… ill annak a címe.)2006-06-04-10:07 #2023750Persze ott valamikor egyszer elsiklottam a hibás (nem cím) felett…. (Ami fordítási hibát okozna.).
Az meg más kérdés, ha az az átadott obj. egy elõre deffiniált méretû. Akkor szõröstûl böröstül – hiba nélkül – átmásolódik… nyílván lassabban, mint egy cím.2006-06-05-16:02 #20237512006-06-25-10:45 #2023752Hali!!
A sourcot beállítani:
Code:textBrowser1->setSource(QString(„/teljes/elérési/útvonal/index.html”));Köv kérdésem: Qt designerrel (cpp-vel) hogyan tudok shell scriptet futtatni? Azaz egy külsõ programot?
2006-06-25-11:09 #2023753Kell az stdio.h, az unistd.h és az stdlib.h a system()-hez. Használata:
Code:system(„parancs”)Azt hiszem ez addig blokkolja a folyamatot, amig be nem fejezõdik a parancs, erre egy másik lehetõség, hogy forkolod az aktuális folyamatot és az újat felülírod.
Code:char *parameterek[n];
parameterek[0]=”paramcs”;
parameterek[1]=”paraméter1″;
parameterek[n-1]=NULL;
if(fork()==0){
execv(parameterek[0], parameterek);
}Remélem jól írtam.
2006-09-20-15:46 #2023754Hali! Parancssorban lehet több modulból álló c++ programot lefordítani? Vagy csak a KDevelop-ban projectként?
2006-09-20-15:58 #2023755Ha tudsz programozni, akkor lehet.
Mondjuk meg kell tanulni makefile-t írni.2006-09-20-16:00 #2023756Most tanulom, azért kérdezem. De köszi, utánnanézek valahol.
2006-09-20-16:04 #2023757Nagyvonalakban, hogy legyen merre indulni: a gcc lefordítja, az ld pedig összefűzi a modulokat.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz