vamitrou Δημοσ. 1 Νοεμβρίου 2008 Δημοσ. 1 Νοεμβρίου 2008 >void CommAgent::fillBranch(Branch& br) { if (caNoOfShops+1 == caReserved) { try { renew( br, caNoOfShops, caReserved+incr ); caReserved += incr; } catch( bad_alloc ) { throw CommAgentXptn( "fillBranch", CommAgentXptn::noMemory ); } } // if caShops[caNoOfShops].setCode( br.getCode() ); caShops[caNoOfShops].setCodeExt( br.getCodeExt() ); caShops[caNoOfShops].setCity( br.getCity() ); caShops[caNoOfShops].setAddress( br.getAddress() ); caShops[caNoOfShops].setTelNum( br.getTelNum() ); } // CommAgent::fillBranch " no matching function for call to `renew(Branch&, unsigned int&, unsigned int)' " Ayti i sinartisi mou vgazei provlima stin renew. Opoios mporei na me voithisei tha tou eimai eygnomwn!!! PS: Sorry gia ta greeklish alla iparxei mallon kapoio provlima me ta ellinika k den ta emfanizei!
kickeras Δημοσ. 1 Νοεμβρίου 2008 Δημοσ. 1 Νοεμβρίου 2008 δεν δείχνεις κ το definition της renew? προφανώς είναι λάθος.
vamitrou Δημοσ. 2 Νοεμβρίου 2008 Μέλος Δημοσ. 2 Νοεμβρίου 2008 >template < class T > void renew( T*& p, int ni, int nf ) { if ( p == 0 && ni > 0 ) throw MyLibXptn( "renew", MyLibXptn::noArray ); // p != 0 || ni <= 0 if ( ni < 0 || nf < ni ) throw MyLibXptn( "renew", MyLibXptn::paramError, ni, nf ); // 0 <= ni <= nf try { T* temp( new T [nf] ); for ( int k = 0; k < ni; ++k ) temp[k] = p[k]; if ( p != 0 ) delete [] p; p = temp; } catch( bad_alloc ) { throw MyLibXptn( "renew", MyLibXptn::noMemory ); } } // void renew
kickeras Δημοσ. 2 Νοεμβρίου 2008 Δημοσ. 2 Νοεμβρίου 2008 Γιατί στη renew περνάς reference στον pointer? Anyway, η renew περιμένει reference σε pointer και εσύ περνάς reference σε object....πέρνα στη fillBranch ένα Branch* αντί για Branch&.
vamitrou Δημοσ. 2 Νοεμβρίου 2008 Μέλος Δημοσ. 2 Νοεμβρίου 2008 Έχεις δίκιο φίλε μου.. Και με είχε σκαλώσει πολύ ώρα...... Thanks!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.