2.10 Testons le résultat

Maintenant que nous avons fait le point sur les modifications des fichiers shadok.h et shadok.cpp nous allons regarder ce que l'on peut en faire.

Changeons le main.cpp :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <iostream>
#include "shadok.h"

using namespace std;


int main(int argc, char** argv) {
	Shadok shadok;
	shadok << "Shadoko";
	shadok << 3;
	shadok << ShadokOption::SHADOKDUHAUT;
	shadok.parler();
	return 0;
}

Nous avons remplacé les setteurs par un seul opérateur.

Compilons avec CMake pour changer (appelez vous il faut aller dans le dossier build en ligne de commande) :

cmake ..
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done

Ensuite :

make
Scanning dependencies of target shadok
[ 50%] Building CXX object CMakeFiles/shadok.dir/shadok.cpp.o
[100%] Building CXX object CMakeFiles/shadok.dir/main.cpp.o
Linking CXX executable shadok             
[100%] Built target shadok

Exécutons le programme :

./shadok 
Bonjour, je m’appelle Shadoko et j'ai 3 ans.
je suis un Shadok du haut.

Le résultat n'a pas changer mais nous avons fait un grand pas.

Je veux bien, mais quel est l’intérêt ?

Et bien, essayez ce qui suit et vous allez comprendre.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <iostream>
#include "shadok.h"

using namespace std;


int main(int argc, char** argv) {
	Shadok shadok;
	shadok << "Shadoko" << 3 << ShadokOption::SHADOKDUHAUT;
	
	shadok.parler();
	return 0;
}

Nous avons tout mis en ligne, et nous laissons les opérateurs << se débrouiller.

Compilons :

make
Scanning dependencies of target shadok
[ 50%] Building CXX object CMakeFiles/shadok.dir/shadok.cpp.o
[100%] Building CXX object CMakeFiles/shadok.dir/main.cpp.o
Linking CXX executable shadok             
[100%] Built target shadok

Exécutons le programme :

./shadok 
Bonjour, je m’appelle Shadoko et j'ai 3 ans.
je suis un Shadok du haut.

Nous obtenons encore la même chose, mais d'une manière beaucoup plus simple que précédemment. Voilà toute la puissance des opérateurs.

Bien sur, il est possible de redéfinir tout les opérateurs, mais il va falloir de demander ce que veut dire une addition de Shadok ou une division de Shadok. Je vous laisse a ces réflexions métaphysiques le temps de passer aux paramètres par défaut.