|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2002
Città: Loano (SV)
Messaggi: 1172
|
[c++]Template e argomenti di default
Con i template è impossibile passare argomenti di default a funzioni? Ho provato a mettere un int x=0 in una funzione di una classe, ma il compilatore si arrabbia
E' veramente scomodo non poter passare parametri di default |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
A me non da problemi, tanto per provare:
Codice:
#include <iostream>
using namespace std;
template <class T>
class ciao{
T c;
int i;
public:
ciao(int ii=10);
friend ostream & operator << (ostream & os, ciao<T> obj);
};
template <class T>
ciao<T>::ciao(int ii)
{
i = ii;
c = T(0);
}
template <class T>
ostream & operator << (ostream & os, ciao<T> obj)
{
os << obj.i << " " << obj.c;
return os;
}
int main()
{
ciao<int> c;
cout << c << endl;
ciao<float> f(100);
cout << f << endl;
return 0;
}
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2002
Città: Loano (SV)
Messaggi: 1172
|
Quote:
se compilo quel codice il compilatore segnala diversi errori. Cmq ho capito questo: se in una funzione c'è un argomento del tipo NomeClasse<T>, allora non posso passare argomenti di default di nessun tipo, neanche int i=0. Se invece non c'è nessun tipo NomeClasse<T> allora posso passarli. Possibile? A me risulta così |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2002
Città: Loano (SV)
Messaggi: 1172
|
ma porca eva adesso va anche se passo come argomenti dei NomeClasse<T>
Ieri ho fatto un albero binario e mi dava errore se passavo argomenti di default. Ora posto il codice Quote:
Sia che io passi come argomenti di default Node<T> *temp=0, int i=0, sia che io passi solamente int i=0 il compilatore mi segnala "error: default argument given for parameter 3 of `void Tree<T>::insertNode(T, Node<T>*, int)' " Non capisco Ultima modifica di Gen.Web : 13-09-2004 alle 16:55. |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#6 | ||
|
Senior Member
Iscritto dal: Dec 2002
Città: Loano (SV)
Messaggi: 1172
|
Quote:
Quote:
|
||
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
A me non da alcun errore il mio codice sopra... Con VC++ 6...
Comunque riguardo a te: - devi includere stdio.h in questo modo: <cstdio> - i parametri di default si definiscono solo al momento della dichiarazione della funzione all'interno della dichiarazione della classe Ultima modifica di cionci : 13-09-2004 alle 17:20. |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Dec 2002
Città: Loano (SV)
Messaggi: 1172
|
Quote:
- sn scemo Io uso minigw |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Perchè le librerie standard del C vengono incluse nel C++ in questo modo: la lettera c segita dal nome della libreria senza il .h...
Le libreri del C++ invece vengono incluse senza scrivere .h... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:38.



















