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

Array of void i prosledjivanje funkciji

[es] :: C++ programiranje :: Array of void i prosledjivanje funkciji

[ Pregleda: 582 | Odgovora: 7 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

inostranac

Član broj: 141142
Poruke: 27
*.kolej.mff.cuni.cz.



Profil

icon Array of void i prosledjivanje funkciji19.03.2008. u 20:29

Pozdrav!

Treba mi nacin da funkciji prosledjujem promenljivi broj i tip podataka (npr. (string, int, int) ili (string, string, double, string)).
Bakcem se tu sa void tipom, dinamickom alokacijom i dereferenciranjem ali sta god sam probao, prijavljuje mi nedozvoljeno koriscenje tipa + size of void unknown. Ne biste verovali, ali cak ni google ne pomaze. Svaka ideja je dobrodosla...

Unapred hvala!
19.03.2008. u 20:29 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2835
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Array of void i prosledjivanje funkciji19.03.2008. u 21:12
Jesi li probao nesto od ovoga, Google: c++ variadic ?

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
19.03.2008. u 21:12 

inostranac

Član broj: 141142
Poruke: 27
*.kolej.mff.cuni.cz.



Profil

icon Re: Array of void i prosledjivanje funkciji19.03.2008. u 21:40
Da, zaboravio sam da kazem da variadic ne pomaze jer mi treba dobra kontrola nad prosledjenim argumentima (ispravite me ako gresim), tj. program ni u kom slucaju ne sme da padne ako mu se proslede nepravilni podaci (tj. vec pre pozivanja funkcije svi argumenti moraju tipski da se prokontrolisu + postoje i dodatna ogranicenja tipa taj i taj integer je iz skupa neparnih brojeva manjih od k). Izvinjavam se ako gresim, ali vec toliko razmisljam o tome da sam skoro zaboravio sta hocu...
19.03.2008. u 21:40 

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 880
*.bethere.co.uk.



Profil

icon Re: Array of void i prosledjivanje funkciji20.03.2008. u 22:56
Ta ti provera treba za vreme kompajliranja ili u ran-tajmu?
20.03.2008. u 22:56 

inostranac

Član broj: 141142
Poruke: 27
*.kolej.mff.cuni.cz.



Profil

icon Re: Array of void i prosledjivanje funkciji30.03.2008. u 01:05
Evo mene opet. Cisto ako neko bude imao isto ovo pitanje, moze funkciji da prosledi niz pokazivaca na void (void**), ili pri inicijalizaciji prosledjuje void***. Posle toga mogu da se dodeljuju razne vrednosti.
Npr.

Code:

int initialize(void ***parameters) {
  *parameters = new (void*)[N];
  (*parameters)[0] = new int;
  (*parameters)[1] = new string;
  ...
  //pristup
  *(int*)((*parameters)[0]) = 5;
  *(string*)((*parameters)[1]) = "sta god"
}


Pozdrav!
30.03.2008. u 01:05 

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 880
*.bethere.co.uk.



Profil

icon Re: Array of void i prosledjivanje funkciji30.03.2008. u 11:08
Teshko da mozhe komplikovanije od toga.
30.03.2008. u 11:08 

1jedini
Dejan Milosavljevic
BG

Član broj: 102721
Poruke: 65
*.cpe.vektor.net.

Sajt: www.ddmrm.com


Profil

icon Re: Array of void i prosledjivanje funkciji30.03.2008. u 15:15
Za pocetak zaboravi void*.

Predlog 1.
Napravi klasa iz koje ces posle sa dynamic_cast da "konvertujes" u neki tip koji ti odgovara.

Npr
Code:

class Parametar  {  };
class IntParametar : public Parametar {public:  int i; };
class StringParametar : public Parametar { public: std::string s; };

int initialize( std::vector<Parametar*> &parameters)
 {
   parameters.push_back( new IntParametar );
   parameters.push_back( new StringParametar );
 }

int obradi( std::vector<Parametar*> &parameters)
 {
  IntParametar     *i = dynamic_cast<IntParameta*r>( parameters[0]) ;// ovako se stitis ako je kojim slucajem promasen tip
  StringParametar  *s = dynamic_cast<StringParametar*>( parameters[1]); // ovako se stitis ako je kojim slucajem promasen tip
  if( NULL != i )  cout <<  i->i << endl;
  if( NULL != s )  cout <<  s->s << endl;
 }

Ovde fale i pametni pointeri da ne bi imao likove kao memori.

Predlog 2.
Vidi boost::variant.
http://www.boost.org/doc/libs/1_35_0/doc/html/boost/variant.html
http://electra.lbl.gov/stuff/variant/doc/tutorial.html
Google: boost variant example


AKA DDMM
30.03.2008. u 15:15 

inostranac

Član broj: 141142
Poruke: 27
*.kolej.mff.cuni.cz.



Profil

icon Re: Array of void i prosledjivanje funkciji30.03.2008. u 23:06
Hvala na savetima.

Predlog je dobar, ali nazalost kasno je stigao...
Vec sam sve uradio preko voida i radi "ko zmaj". Cinjenica je da sam morao sam da se osiguravam protiv promasenih tipova i da sam se malo izbedacio jer je ocigledno moglo elegantnije, ali sta je tu je... Zivot bi bio previse dosadan bez rupa u znanju OOP-a... :0

Pozdrav!
30.03.2008. u 23:06 

[es] :: C++ programiranje :: Array of void i prosledjivanje funkciji

[ Pregleda: 582 | Odgovora: 7 ]

Postavi temu Odgovori

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