Portál AbcLinuxu, 12. července 2025 23:24


Dotaz: undefined reference to `operator new[](unsigned long)'

30.6.2008 13:45 goderik | skóre: 1
undefined reference to `operator new[](unsigned long)'
Přečteno: 670×
Odpovědět | Admin
Jde mi o ziskani pole ukazatelu na tridu services. Kod, ktery vyvolava vyjimku:
class prior_queue {
public:
prior_queue(const unsigned int num); // create
void add(service *s); // add a new member
service* get_first(void); // get the very first one off the queue
private:
service **services;
unsigned int number, actual; // number of sevices - all and now present
};

prior_queue::prior_queue(const unsigned int num)
{
number = num;
actual = 0;
services = new service * [num];
}


Nevim, jestli mam neco includovat, nebo mi neco v systemu chybi, nebo jestli jsem proste jenom pako.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Luboš Doležel (Doli) avatar 30.6.2008 14:45 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proč prostě nepoužít nějaký std::vector, std::queue nebo něco podobného.
30.6.2008 15:42 goderik | skóre: 1
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Ve vysledku je to halda v poli - myslim, ze vector neni az tak dobra struktura, protoze se bude brat nejmensi prvek, pouzije se, zvetsi se a vrati se do fronty. Musel bych to pretridovat a to se podle me deje v nejlepe tak linearnim case, ale v halde to zvladnu v case logarytmickem!
3.8.2008 16:32 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
logaritmickém! :-)
3.8.2008 16:13 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Odpovědět | | Sbalit | Link | Blokovat | Admin
V C++ existuje priority_queue coz podle tridy jak jsi ji nazval chces. Funguje to na pricipu AVL nebo Red Black stromu. Nicmene pokud ti rika ze nemuze najit new. Zkusil bych to napsat services = new service * [num]; nebo na zacatku modulu napsat using namespace new.

A taky se mi moc nezda
services = new service * [num];
napsal bych to takle
services = new service[num];
Save the whales. Feed the hungry. Free the mallocs
Luboš Doležel (Doli) avatar 3.8.2008 16:51 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
O namespace new jsem nikdy neslyšel, new je klíčové slovo jazyka. Na new service* není nic v nepořádku, je to dynamická alokace ukazatele na service.
4.8.2008 17:11 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
jeziz jsem tam napsal uplne hovadiny. myslel jsem to takhle std::new nebo dat using namespace std na zacatek modulu.
Save the whales. Feed the hungry. Free the mallocs
4.8.2008 17:22 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Myslím si a jsem si celkem jistý, že new je součástí jazyka jako takového a ne až STL. Každopádně, ať se dívám do /usr/include/c++/4.1/new jak se dívám, vidím " This file is part of GCC." a vidím, že void* operator new v žádném namespace není. Prostě žádný std::new neexistuje. V namespace std je leda tak alokátor nebo třídy výjimek.
8.8.2008 23:17 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Byly to vystrely do tmy protoze radeji mam ciste C a s C++ moc nejsem za dobre. Dej sem zdrojak rad se na to kouknu.
Save the whales. Feed the hungry. Free the mallocs
12.8.2008 04:13 luky
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Nejsem odbornik na C++, ale nemyslim si, ze to neni v neporadku. Ja v tom teda vidim

((new service) krat ([num]))

12.8.2008 04:51 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
nemyslim si, ze to neni v neporadku

Že se nestydíte, používat takové formulace v tuhle pozdně večerní hodinu. :-)

((new service) krat ([num]))

A co podle vás znamená to '[num]'?

12.8.2008 09:36 luky
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Ja jsem jen k "neni v neporadku" jen dodal "nemyslim si" :-) To '[num]' je podle me duvod proc prekladac krici, ale mozna se pletu a nasobeni ukazatele na objekt cislem v hranatych zavorkach vytvari pole. Coz se mi teda vubec nezda :-)
12.8.2008 10:09 luky
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
OK, tak jsem to omrknul a nevyhodnocuje se to jako nasobeni. Staci rict, ne? :)
12.8.2008 11:07 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Ono je hlavně dobré si nejdřív přečíst ostatní příspěvky. Před tím vaším už jsem tady dvakrát upozornil, že to není hláška překladače ale linkeru.
3.8.2008 16:38 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hm, moc ti neporadím, protože mě se ten kód v gcc zkompiluje (po mírném zaimprovizováním s typem service). Problém bych spíš viděl v konstruktoru service.
4.8.2008 20:05 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Odpovědět | | Sbalit | Link | Blokovat | Admin
Linkujete to příkazem g++ nebo gcc?
10.8.2008 20:39 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jakou vyjimku to vyvola, std::bad_alloc?
10.8.2008 20:44 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Ta hláška ze subjectu nezní moc jako výjimka, spíš chybové hlášení linkeru. Proto jsem se ptal, jestli to linkuje pomocí g++ nebo gcc (při linkování příkazem gcc je třeba přidat ručně -lstdc++), ale tazatele už to asi přestalo zajímat.
11.8.2008 01:20 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: undefined reference to `operator new[](unsigned long)'
Aha, subject. Jo, to bude presne to, co rikate, a asi na to uz prisel sam...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.