1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
// ParametreDansPrototypeTemplate.cpp
// Illustre quelque chose qui me paraît anormal :
// obligation de mettre un paramètre
// dans le prototype d'une fonction "template".
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <vector>
// using std::vector; // Cet "using" est à ne pas utiliser,
// d'après Deitel, p. 978.
class myString
{
public:
myString(const string & s = "") {laChaine = s;}
private:
string laChaine;
};
template<class T> void afficherLaTaille(std::vector<T> & v);
// prototype.
// Si on n'indique pas le paramètre dans le prototype,
// le compilateur (Visual C++ 6)
// objecte que le paramètre de la fonction
// afficherLaTaille(std::vector<T> & v)
// n'est pas défini.
int main()
{
int TAILLE = 2; // par exemple
std::vector<myString> w(TAILLE);
w[0] = myString(string("a"));
w[1] = myString(string("bc"));
afficherLaTaille(w);
return 0;
}
template<class T> void afficherLaTaille(std::vector<T> & v)
{
cout << v.size() << endl;
} |
Partager