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

Ludorije u C++.NET-u

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

[ Pregleda: 1198 | Odgovora: 9 ]

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

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!!??
10.03.2004. u 13:47 

Dragi Tata

Član broj: 1958
Poruke: 3899
199.171.112.*

Sajt: www.novetehnologije.com


Profil

icon Re: Ludorije u C++.NET-u10.03.2004. u 16:14
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?
10.03.2004. u 16:14 

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
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!
11.03.2004. u 08:49 

Reljam
Relja Markovic
Project Natal - Microsoft Game Studios
Seattle, WA

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

Sajt: www.linkedin.com/in/relja..


Profil

icon Re: Ludorije u C++.NET-u11.03.2004. u 09:01
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.
11.03.2004. u 09:01 

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
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!
11.03.2004. u 12:09 

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
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!!!
12.03.2004. u 07:49 

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

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

Sajt: dejan.lekic.org


Profil

icon Re: Ludorije u C++.NET-u12.03.2004. u 12:02
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
12.03.2004. u 12:02 

srki
Srdjan Mitrovic
Auckland, N.Z.

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



Profil

icon Re: Ludorije u C++.NET-u12.03.2004. u 13:48
Zar nije koriscenje #pragma once dovoljno portabilno?
12.03.2004. u 13:48 

alex
Aleksandar Radulovic
Software Architect, Software Development, Síminn hf.
Reykjavik, Iceland

Administrator
Član broj: 71
Poruke: 2180
*.habil.is

Jabber: maurice.chavez@gmail.com
ICQ: -1
Sajt: www.a13x.info


Profil

icon Re: Ludorije u C++.NET-u12.03.2004. u 14:03
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
12.03.2004. u 14:03 

Reljam
Relja Markovic
Project Natal - Microsoft Game Studios
Seattle, WA

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

Sajt: www.linkedin.com/in/relja..


Profil

icon Re: Ludorije u C++.NET-u12.03.2004. u 16:27
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. ;)
12.03.2004. u 16:27 

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

[ Pregleda: 1198 | Odgovora: 9 ]

Postavi temu Odgovori

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