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

Array of void i prosledjivanje funkciji

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

[ Pregleda: 2713 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

inostranac

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



Profil

icon Array of void i prosledjivanje funkciji19.03.2008. u 20:29 - pre 195 meseci
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!
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Array of void i prosledjivanje funkciji19.03.2008. u 21:12 - pre 195 meseci
Jesi li probao nesto od ovoga, Google: c++ variadic ?
 
Odgovor na temu

inostranac

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



Profil

icon Re: Array of void i prosledjivanje funkciji19.03.2008. u 21:40 - pre 195 meseci
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...
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

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



+4 Profil

icon Re: Array of void i prosledjivanje funkciji20.03.2008. u 22:56 - pre 195 meseci
Ta ti provera treba za vreme kompajliranja ili u ran-tajmu?
 
Odgovor na temu

inostranac

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



Profil

icon Re: Array of void i prosledjivanje funkciji30.03.2008. u 01:05 - pre 195 meseci
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!
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

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



+4 Profil

icon Re: Array of void i prosledjivanje funkciji30.03.2008. u 11:08 - pre 195 meseci
Teshko da mozhe komplikovanije od toga.
 
Odgovor na temu

1jedini
Dejan Milosavljevic
BG

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



Profil

icon Re: Array of void i prosledjivanje funkciji30.03.2008. u 15:15 - pre 195 meseci
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
 
Odgovor na temu

inostranac

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



Profil

icon Re: Array of void i prosledjivanje funkciji30.03.2008. u 23:06 - pre 195 meseci
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!
 
Odgovor na temu

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

[ Pregleda: 2713 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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