Newsgroup: it.comp.lang.c++
Titolo: Inizializzazione di un bitset con una stringa

 Che errore ti da?
Scrivendo:
bitset<32> bitvec( "1100011010101" );
l'errore č:
99 main.cpp
 no matching function for call to `bitset<32,long unsigned int>::bitset
(const char[14])'
622 c:\dev-c_~1\include\g__~1\bitset
 candidates are: bitset<32,long unsigned int>::bitset()
623 c:\dev-c_~1\include\g__~1\bitset
 bitset<32,long unsigned int>::bitset(long unsigned int)
815 c:\dev-c_~1\include\g__~1\bitset
 bitset<32,long unsigned int>::bitset(const bitset<32,long unsigned int> &)
Cioč sembra che non provi proprio ad usare il costruttore della classe
string (che perň non so se č explicit) per convertire implicitamente la
stringa C nell'oggetto string che accetta il costruyttore di bitset, come
invece il Visual C++ sembra fare.
--
Marco Iannaccone
marc...@tin.it
ICQ UIN: 18748121     MetalCoder
"I bei film drammatici fanno sentire intelligenti anche gli stupidi, i bei
film comici fanno tornare bambini anche le persone intelligenti.
Peccato che sia piů facile trovare stupidi che vogliono sembrare
intelligenti che persone intelligenti col coraggio di saper tornare bambini"
        Stan Laurel

 invece il Visual C++ sembra fare.
Il costruttore da una std::string e', a norma di Standard, "explicit
bitset<bits> ( const std::string & )"; g++ prerelease 3 accetta una
dichiarazione std::bitset<8> a( std::string("101010") ); mentre ne
rifiuta una std::bitset<8> a( "101010" ); .
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
The instructions said to use Windows 98 or better - so I installed FreeBSD.

 wrote in message
news:wDNy6.17354$Oz4.4...@news2.tin.it...

Ho verificato. E' explicit.
Ma credo che la versione della libreria del C++ che usi sia quella vecchia.
Una cosa curiosa: non dovrebbe esistere il copy constructor del bitset!
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 rifiuta una std::bitset<8> a( "101010" ); .
Ma e' corretto? Esiste un costruttore non esplicito di basic_string che
prende un char const *, ed il reference del parametro del costruttore di
bitset e' costante, per cui la costruzione td::bitset<8> a( "101010" )
dovrebbe essere valida.
[Dopo un po' di spulcio...]
Come non detto: il costruttore di cui sopra e' un template, per cui i
relativi argomenti devono combaciare *esattamente* perche' venga
istanziato. Ci sono momenti in cui mi domando perche' ho abbandonato il
C per il C++ :-)
Ciao,
Nicola

 Una cosa curiosa: non dovrebbe esistere il copy constructor del bitset!
In fatti non esiste, ma, chi l'ha nominato? :-)


 ha scritto nel messaggio
news:3ACC434F...@divalsim.it...


  bitset<32,long unsigned int>::bitset(const bitset<32,long unsigned int>
&)
?
--
Marco Iannaccone
marc...@tin.it
ICQ UIN: 18748121     MetalCoder
"I bei film drammatici fanno sentire intelligenti anche gli stupidi, i bei
film comici fanno tornare bambini anche le persone intelligenti.
Peccato che sia più facile trovare stupidi che vogliono sembrare


 costruttore di bitset accetta per forza un oggetto string?
In questo caso si.
Ciao,
Nicola

 In questo caso si.
Ok, in questo caso non è chiamato perchè il costruttore di bitset è un
template.
Ma, alla fine, il costruttore di string che accetta una stringa C è explicit
o no?


 o no?
No.
Ciao,
Nicola

 o no?
No. Ma lo e' quello (templated) di bitset che accetta la stringa.


 ?
Esatto. Quindi questa implementazione della STL e' meglio della vecchia
implementazione di VC (che tra l'altro e' uscita prima che ci fosse lo standard)
dal punto di vista del costruttore explicit, ma e' peggio dal punto di vista del
copy constructor.
Un calcio al cerchio e uno alla botte e ...


 copy constructor.
Beh, non č peggio. E' conforme allo standard ma ti da anche qualcosa in piů,
che puoi usare o no...
--
Marco Iannaccone
marc...@tin.it
ICQ UIN: 18748121     MetalCoder
"I bei film drammatici fanno sentire intelligenti anche gli stupidi, i bei
film comici fanno tornare bambini anche le persone intelligenti.
Peccato che sia piů facile trovare stupidi che vogliono sembrare
