Προς το περιεχόμενο

OO/C++


vamitrou

Προτεινόμενες αναρτήσεις

Δημοσ.

>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!

Δημοσ.
>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

Δημοσ.

Γιατί στη renew περνάς reference στον pointer? Anyway, η renew περιμένει reference σε pointer και εσύ περνάς reference σε object....πέρνα στη fillBranch ένα Branch* αντί για Branch&.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...