Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ludorije u C++.NET-u

[es] :: .NET :: Ludorije u C++.NET-u

[ Pregleda: 2736 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ZenMajstor
Faruk Hadzimurtezic
Sarajevo

Član broj: 21330
Poruke: 14
195.222.35.*



Profil

icon Ludorije u C++.NET-u10.03.2004. u 13:47 - pre 215 meseci
Stvarno je ovaj C++.NET nevjerovatan.

Imam 5 klasa: KlasaBazna
KlasaIzvedena1
KlasaIzvedena2
KlasaSaKontejnerima
KlasaKorisnickiException

Sve se klase nalaze u istom namespace-u. I sve su pisane u zasebnim fajlovima sa deklaracijama u .h fajlovima i implementacijama u .cpp fajlovima.

sada: public __gc class KlasaIzvedena1:public KlasaBazna
public __gc class KlasaIzvedena2:public KlasaBazna

naravno u .h fajl izvedenih klasa ukljucio .h fajl bazne klase KlasaBazna (#include "KlasaBazna.h")
---------------------------------------------------------------------------
PARADOX1
KlasaSaKontejnerima sadrzi objekte klasa KlasaIzvedena1 i KlasaIzvedena2:

KlasaIzvedena1 * ptr1;
KlasaIzvedena2 * ptr2;

naravno u KlasaSaKontejnerima.h fajl ukljucio KlasaIzvedena1(2).h

sve radi BEZ PROBLEMA
---------------------------------------------------------------------------
PARADOKS2
Sada u KlasaIzvedena1(2) mi treba objekat klase KlasaKorisnickiException, i da bih ga napravio moram u KlasaIzvedena1(2).h ukljuciti KlasaKorisnickiException.h

i sta se desava??

error: class type redefinition i pokazuje na KlasaKorisnickiException

jasno mi je da je to zbog toga sto u KlasaSaKontejnerom.h imam #include "KlasaIzvedena1" i #include "KlasaIzvedena2" a posto je u obe klase ukljucen KlasaKorisnickiException.h kao da ga dva puta ispisuje!

Ali zasto je prije toga radilo bez problema (POGLEDATI PARADOX1).
-----------------------------------------------------------------------------
Problem sam resio kasnije drugacijim dizajnom, ali i dalje me ovaj paradoks zbunjuje!!??
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Ludorije u C++.NET-u10.03.2004. u 16:14 - pre 215 meseci
Citat:
ZenMajstor:

error: class type redefinition i pokazuje na KlasaKorisnickiException

jasno mi je da je to zbog toga sto u KlasaSaKontejnerom.h imam #include "KlasaIzvedena1" i #include "KlasaIzvedena2" a posto je u obe klase ukljucen KlasaKorisnickiException.h kao da ga dva puta ispisuje!



A je si li stavio #pragma once na početak svojih header fajlova?
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: Ludorije u C++.NET-u11.03.2004. u 08:49 - pre 215 meseci
Citat:
Dragi Tata:
Citat:
ZenMajstor:

error: class type redefinition i pokazuje na KlasaKorisnickiException

jasno mi je da je to zbog toga sto u KlasaSaKontejnerom.h imam #include "KlasaIzvedena1" i #include "KlasaIzvedena2" a posto je u obe klase ukljucen KlasaKorisnickiException.h kao da ga dva puta ispisuje!



A je si li stavio #pragma once na početak svojih header fajlova?


Mislim da je bolje da ceo header zaokruzi sa jednim #IFNDEF - #ENDIF, nesto kao ovo:
Code:

#IFNDEF _KLASA_1_
#DEFINE _KLASA_1_

class Klasa1
{
    ....
};

#ENDIF

time obezbedjuje da ma koliko puta header bio uvucen, uvek ce se samo jednom proci kroz njega
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.attbi.cable.earthlink.net



+18 Profil

icon Re: Ludorije u C++.NET-u11.03.2004. u 09:01 - pre 215 meseci
Havramm, to je upravo ono sto je Nemanja gore napisao, samo sto se to u zadnjih nekoliko verzija Visual Studija zove #pragma once. Ako covek vec koristi VS.NET, onda bi mu bilo bolje da koristi '#pragma once' umesto starijeg '#ifdef / #define / #endif' nacina.
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: Ludorije u C++.NET-u11.03.2004. u 12:09 - pre 215 meseci
OK, nisam znao za to... Davno sam polagao cpp, a i dosta vremena ga vec ne koristim... U svakom slucaju hvala na informaciji
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

ZenMajstor
Faruk Hadzimurtezic
Sarajevo

Član broj: 21330
Poruke: 14
195.222.35.*



Profil

icon Re: Ludorije u C++.NET-u12.03.2004. u 07:49 - pre 215 meseci
Hvala vam, upravi je ti i bilo. Ono sto me zbunilo (jedno radi drugo ne radi) je to sto sam u jednom .h fajlu (onom koji je radio ispravno to ukljucio), ali u drugom nisam i naravno nije radio. Ja sam toliko bio premoren da to nisam u tom trenutku video.

Hvala jos jednom!!!
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Ludorije u C++.NET-u12.03.2004. u 12:02 - pre 215 meseci
Code:
Ako covek vec koristi VS.NET, onda bi mu bilo bolje da koristi

'#pragma once' umesto starijeg '#ifdef / #define / #endif'

nacina.
Predlazes li ovo i programerima koji (bi trebalo) da

pokusavaju da pisu portabilan kod, a koji koriste VisualStudio kao

alatku (recimo ja sam jedan o takvih)? :)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.dialup.xtra.co.nz



+3 Profil

icon Re: Ludorije u C++.NET-u12.03.2004. u 13:48 - pre 215 meseci
Zar nije koriscenje #pragma once dovoljno portabilno?
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.habil.is

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Ludorije u C++.NET-u12.03.2004. u 14:03 - pre 215 meseci
Koliko je meni poznato, velika vecina C/C++ preprocesora podrzava #pragma once direktivu, medju kojima je svakako i GCC (sto Leku, verujem, najvise i zanima).

With that said, osim ukoliko ne razvijate neki specijalizovan embedded kôd sa custom-made kompajlerom , nema nikakve bojazni od koriscenja te direktive.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.attbi.cable.earthlink.net



+18 Profil

icon Re: Ludorije u C++.NET-u12.03.2004. u 16:27 - pre 215 meseci
Leka, znas ti mene: treba koristiti alat koji je primeren poslu - ako covek programira u managed C++u, onda treba da koristi VS.NET ekstenzije. A i inace treba da koristi one ekstenzije koje postoje na platformama koja predstavljaju 90% njegovih klijenata, ma koja platforme to bile. ;)
 
Odgovor na temu

[es] :: .NET :: Ludorije u C++.NET-u

[ Pregleda: 2736 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.