|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Registered User
Iscritto dal: Oct 2006
Messaggi: 82
|
[c++]ereditarietà e ridefinizione degli operatori
class Mystring: public std::string{
public: Mystring(){ } }; int main() { Mystring a,b; a=b; Mystring s; s = "mamma"; } compilando questo codice ottengo: error: no match for 'operator=' in 's = "mamma"' Come mai funziona il primo assegnamento e non il secondo? Non vengono ereditati gli operatori ridefiniti? (in questo caso parlo di quelli ridefiniti in std::string). Ma allora come mai funziona il primo assegnamento?Viene utilizzata la copia di default membro a membro? |
|
|
|
|
|
#2 |
|
Registered User
Iscritto dal: Oct 2006
Messaggi: 82
|
Si ma io posso fare questo:
std::string st = "babbo"; Mi sembra strano che non si possa fare con Mystring |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
a me sembra perfettamente normale invece: la tua classe Mystring non ha nessun costruttore con un argomento di tipo const char*, che è quello che verrebbe usato da quel tipo di inizializzazione.
|
|
|
|
|
|
#4 |
|
Registered User
Iscritto dal: Oct 2006
Messaggi: 82
|
Come al solito ho trovato un esempio sbagliato e vi sto confondendo.
Non parlavo del costruttore ma dell'opearatore = Con la classe std::string posso fare: std::string a; a = "mamma"; Ma non posso farlo con la classe Mystring, perchè? Immagino che la classe std::string abbia una funzione tipo operator= ( const char * str ), questa funzione non dovrebbe essere ereditata da Mystring? |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Se vuoi fare Codice:
Mystring mst = "babbo";
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:07.



















