leur IDE = ?
Sinon, oui, QtCreator est intéressant quand tu utilises Qt.
[box=code]#include <iostream> using namespace std; class CVector { public: int x,y; CVector (){}; CVector (int a, int b) { x = a; y = b; } CVector operator+ (CVector param) { CVector temp; temp.x = x + param.x; temp.y = y + param.y; return (temp); } CVector operator+= (CVector param) { this->x += param.x; this->y += param.y; return *this; } }; int main () { CVector a (3,1); CVector b (1,2); CVector c = (a += b); cout << c.x << "," << c.y; re[/code]
-------------- Build: Debug in test --------------- Linking stage skipped (build target has no object files to link) Nothing to be done. Nothing to be done.
-------------- Clean: Debug in tayst --------------- Cleaned "tayst - Debug" -------------- Build: Debug in tayst --------------- Compiling: main.cpp Linking console executable: bin\Debug\tayst.exe Output size is 594.80 KB Process terminated with status 0 (0 minutes, 0 seconds) 0 errors, 0 warnings
-------------- Clean: Release in tayst --------------- Cleaned "tayst - Release" -------------- Build: Release in tayst --------------- Compiling: main.cpp Linking console executable: bin\Release\tayst.exe Output size is 273.50 KB Process terminated with status 0 (0 minutes, 0 seconds) 0 errors, 0 warnings
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <CodeBlocks_project_file> <FileVersion major="1" minor="6" /> <Project> <Option title="tayst" /> <Option pch_mode="2" /> <Option compiler="gcc" /> <Build> <Target title="Debug"> <Option output="bin\Debug\tayst" prefix_auto="1" extension_auto="1" /> <Option object_output="obj\Debug\" /> <Option type="1" /> <Option compiler="gcc" /> <Compiler> <Add option="-g" /> </Compiler> </Target> <Target title="Release"> <Option output="bin\Release\tayst" prefix_auto="1" extension_auto="1" /> <Option object_output="obj\Release\" /> <Option type="1" /> <Option compiler="gcc" /> <Compiler> <Add option="-O2" /> </Compiler> <Linker> <Add option="-s" /> </Linker> </Target> </Build> <Compiler> <Add option="-Wall" /> <Add option="-fexceptions" /> </Compiler> <Unit filename="main.cpp" /> <Extensions> <code_completion /> <envvars /> <debugger /> <lib_finder disable_auto="1" /> </Extensions> </Project> </CodeBlocks_project_file>
-------------- Clean: Release in tayst --------------- Cleaned "tayst - Release" -------------- Build: Release in tayst --------------- Linking stage skipped (build target has no object files to link) Nothing to be done.
int main () { try { throw 20; } catch (int e) { cout << "An exception occurred. " cout << "Exception Nr. " << e << endl; } }
GoldenCrystal (./158) :
Une fonction ?
catch (int e) { cout << "An exception occurred. " cout << "Exception Nr. " << e << endl; } }
Folco (./160) :Si jamais c'est le paramètre entre parenthèses qui te fait croire à une fonction, ça n'a pas grand chose à voir: (c'est pas non plus 100% différent fonctionnellement mais ne t'attarde pas là dessus !GoldenCrystal (./158) :
Une fonction ?catch (int e) { cout << "An exception occurred. " cout << "Exception Nr. " << e << endl; } }Ben ça, ça ressemble à une fonction[/pre]
qui peut être écrite en-dehors de toute autre, non ?Le bloc catch que tu as écrit n'est il pas justement lié au bloc try (que tu ne sembles pas considérer comme une fonction ?
try // Je sais que quelque chose de mauvais pourrait se passer là { Approcher(); // J'essaye de m'approcher d'un truc } catch (ErreurOdeur& e) // Si jamais ça pue { Reculer(); // Je recule avant que mon nez ne souffre trop cout << "Ça pue le " << e.odeur << endl; } catch (TropPres& e) // Si jamais je suis déjà trop près { cout << "Distance " << e.distance << " m" << endl; }Tu vois bien que c'est complètement lié là ?
GoldenCrystal (./166) :
Pour le typedef, c'est le comportement normal, les valeurs sont compatibles entre elles. Sinon il faudrait créer ton propre type (donc classe/structure/union) mais il faut que ce soit vraiment justifié (i.e. que tu apportes vraiment quelque chose en faisant ça, genre une méthode ou des opérateurs surchargés particuliers, etc...)
Folco (./170) :Moué... Je vois où tu veux en venir... Mais malgré ça, il n'y a aucun exemple qui me vienne en tête où tu ne pourrais pas t'en tirer honorablement (et peut-être plus clairement/proprement) sans ce genre de bidouilles.
Je me demandais si ça pouvait arriver qu'on veuille appeler deux constructeurs de même signatures, mais faisant des choses différentes. Donc avoir par exemple deux constructeurs Maclasse(int), et que l'on puisse choisir entre eux.
GoldenCrystal (./171) :
signature = nom complet de methode + type des paramètres / valeur de retour
GoldenCrystal (./166) :
Pareil ^^
D'ailleurs le constructeur de int n'accepte-t-il pas que des int ?
{ | }
Brunni (./175) :Et avec un typedef ?GoldenCrystal (./166) :Non, pour les types primitifs ça revient exactement au même qu'un cast. Sauf que si ton type a un nom composé (comme unsigned short) bah tu ne peux te servir que du premier.
Pareil ^^
D'ailleurs le constructeur de int n'accepte-t-il pas que des int ?