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

Kako da prosledim matricu objekata kao argument?

[es] :: C programiranje :: Kako da prosledim matricu objekata kao argument?

[ Pregleda: 1252 | Odgovora: 6 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

LightBow
London

Član broj: 4829
Poruke: 156
*.bulldogdsl.com.



Profil

icon Kako da prosledim matricu objekata kao argument?14.01.2006. u 11:30
Napravio sam klasu Supplier i u main programu deklarisao niz:
Code:
Supplier* suppliers[10];

zatim sam napunio matricu s 10 objekata.
Sada mi je potrebno da pozovem funkciju supMask() iz drugog fajla, mask.cpp, gde sam je definisao ovako:

Code:
void supMask(Supplier* suppliers[]) {
    for(int i=0; i<10;i++) {
        cout<<suppliers[i]->getName()<<endl;
        }
}

a pozivam iz main fajla ovako:
Code:
supMask(suppliers[10]);

Kompajlira ok, ali mi daje gresku pri linkovanju:
error LNK2001: unresolved external symbol "void __cdecl supMask(class Supplier *)
U cemu je greska?
14.01.2006. u 11:30 

dado_k
Varaždin

Član broj: 57122
Poruke: 301
*.cmu.carnet.hr.

ICQ: 326865106
Sajt: radim baš novi sajt u ph..


Profil

icon Re: Kako da prosledim matricu objekata kao argument?14.01.2006. u 12:27
prouči malo pointere...
14.01.2006. u 12:27 

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 133
*.broadband.blic.net.



Profil

icon Re: Kako da prosledim matricu objekata kao argument?14.01.2006. u 13:46
Pokusaj ovako:

U kodu da prosledis:

Code:

supMask((Supplier*)suppliers);



Code:

void supMask (Supplier* psup) // ocekuje pointer na Supplier klasu, ne zna koliko objekat a ce biti u nizu
{
    for(int i=0; i<10;i++) {
        cout<<suppliers[i]->getName()<<endl;
        }
}



14.01.2006. u 13:46 

Goran Arandjelovic
Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 263
*.61.eunet.yu.

Jabber: goranche@elitesecurity.org


Profil

icon Re: Kako da prosledim matricu objekata kao argument?14.01.2006. u 17:06
A i ako je to niz tvojih objekata, pa i prostih tipova, napiši neku wrapper klasu... nešto kao "MyObjectsArray" pa funkciji samo taj objekat prosledi i nemaš brige oko nizova i matrica... Može i overload operatora i sl. Zavisi koliko je veliko to što pišeš...dakle, od potreba.
14.01.2006. u 17:06 

LightBow
London

Član broj: 4829
Poruke: 156
*.bulldogdsl.com.



Profil

icon Re: Kako da prosledim matricu objekata kao argument?14.01.2006. u 23:23
Kada stavim Ljubetov kod, i plus u definiciji funkcije promenim "->" u ".", onda kompajlira, ali dobijem run-time gresku. Da li bi neko znao da mi objasni u cemu je greska, zasto ni moj originalni kod nije radio?
Hvala
14.01.2006. u 23:23 

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 133
*.broadband.blic.net.



Profil

icon Re: Kako da prosledim matricu objekata kao argument?15.01.2006. u 16:59
Nisam obracao paznju na sadrzaj supMask.

U svakom slucaju evo ti primjer koda koji radi:

Code:

#include <iostream>
using namespace std;

class Supplier 
{
public:
  Supplier() { 
    strcpy(name, "name not set!");
  }
  ~Supplier() {
  }



  void setName(char * namex) 
  {
        if (name) strcpy(name, namex);
  };
  
  char * getName() {
    return     name;
  }
  
protected:
char name[50];
   
};


int main(int argc, char* argv[])
{    int x = 0;
    char name[20];
    Supplier * suppliers = new Supplier[10];

    for (x = 0; x<10; x++) {
        sprintf((char*)name, "supplier No.%d", x);
        suppliers[x].setName(name);
    }

    
    for (x = 0; x<10; x++) {
        cout<<suppliers[x].getName()<<endl;
    }
    
       delete [] suppliers;
    return 0;
}



Program moze da ti puca i na nekim drugim mjestima.

Lj.
15.01.2006. u 16:59 

LightBow
London

Član broj: 4829
Poruke: 156
*.bulldogdsl.com.



Profil

icon Re: Kako da prosledim matricu objekata kao argument?18.01.2006. u 05:31
Hvala Ljube, ali proradio je moj originalni kod kada sam pozvao funkciju sa
supMask(suppliers)
bez [].
18.01.2006. u 05:31 

[es] :: C programiranje :: Kako da prosledim matricu objekata kao argument?

[ Pregleda: 1252 | Odgovora: 6 ]

Postavi temu Odgovori

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