Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 2.6.2012, 0:59   #1
clzola
Član
 
Član od: 14.4.2010.
Lokacija: Podgorica
Poruke: 332
Zahvalnice: 61
Zahvaljeno 11 puta na 11 poruka
Određen forumom make_pair pitanje ??

Kod:
#include <iostream>
#include <string>
#include <map>

class Object {
    public:
        int x;
        int y;
};

class NekaKlasa {
    private:
        std::map< std::string, Object* > m_Obj;

    public:
        void AddObject( Object*, std::string );
};

void NekaKlasa::AddObject(Object* obj, std::string str) {
    m_Obj.insert( std::make_pair<std::string, Object*> ( str, obj ) );
}

int main()
{
    return 0;
}
(Ni jedan dio koda nije izostavljen, tacno ovo kucam)

Ovaj kod se uspjesno kompajlira pod Windows7 u CodeBlocks (mingw32). Medjutim kad isti kod kompajliram pod Linux Ubuntu 11.10 (g++) dobijam sledeci error:
Kod:
In member function ‘void NekaKlasa::AddObject(Object*, std::string)’:
error: no matching function for call to ‘make_pair(std::string&, Object*&)’
note: candidate is:
note: template<class _T1, class _T2> std::pair<typename std::__decay_and_strip<_T1>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)
Dok ako kucam std:: pair (moram da odvojim zbog smajlija xD) umjesto std::make_pair, radi.

Sta je problem ?? xD
clzola je offline   Odgovor sa citatom ove poruke
Stara 2.6.2012, 8:52   #2
fingerprint
Veteran
 
Član od: 5.11.2006.
Lokacija: Dark Side Of The Moon
Poruke: 1.121
Zahvalnice: 394
Zahvaljeno 594 puta na 222 poruka
Slanje poruke preko MSN-a korisniku fingerprint Slanje poruke preko Yahooa korisniku fingerprint
Određen forumom Re: make_pair pitanje ??

Probaj sa samo :
Kod:
std::make_pair( str, obj )
U C++11 std::make_pair prima dve rvalue reference. Ako eksplicitno naglasiš template parametre, onda se ne desi reference collapsing (pročitaj ovde) i funkcija izgleda ovako :
Kod:
std::make_pair(std::string &&, Object&&)
Pošto su str i obj imenovani objekti, ne mogu biti rvalue. S druge strane, ako ne staviš template parametre, kompajler će sam zaključiti koji su tipovi u pitanju i sve će biti ok

Ovaj guide odlično objašnjava celu stvar : link
fingerprint je offline   Odgovor sa citatom ove poruke
Stara 2.6.2012, 16:38   #3
clzola
Član
 
Član od: 14.4.2010.
Lokacija: Podgorica
Poruke: 332
Zahvalnice: 61
Zahvaljeno 11 puta na 11 poruka
Određen forumom Re: make_pair pitanje ??

Sad radi
hvala ti !
clzola je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku clzola na korisnoj poruci:
fingerprint (5.6.2012)
Odgovor

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Teoretsko pitanje - konfa do 100 evra :) Eni Šta da kupim? 50 7.12.2012 14:47
Prosto pitanje, barem se nadam, validacija forme nepoverljiv Serverske aplikacije i baze podataka 2 26.9.2010 16:14
Stručno pitanje vezano za monitor FiresnakE Kvarovi 11 10.5.2010 10:10
Pitanje u vezi telekom ADSL-a i lokalne mreze NinoJovic Komunikacioni uređaji i umrežavanje 1 28.4.2010 12:38
Pitanje za rubriku I/O PORT nesto nece herrnikolic O SK-u uopšte 5 14.12.2009 22:14


Sva vremena su po Griniču +2 h. Sada je 0:36.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com