Apparement, voici la liste des DLL nécessaires pour faire tourner un programme sous Qt5 :
Des bibliothèques (et exemples d'applications) sous Qt pouvant s'avérer utiles à l'occasion.
En C++, une classe est automatiquement amie d'elle même. Ce qui explique l'on puisse appeler un objet privée de la classe dans le constructeur de copie. Ahhhhh !!! Je comprends mieux.
Exemple :
class MyClass {
public:
MyCLass() : myVar(0) {}
MyClass(const MyClass& parent) {
myVar = parent.myVar; // will work and is possible
// myVar = parent.myVar(); // won't work like this. myVar() has to be "int myVar() const;"
}
int myVar() { return myVar_; }
private:
int myVar_;
};
Arg, pour connecter un QObject qui a été forward declared (class MyQObject dans le .h de l'utilisateur), il ne faut pas oublier d'inclure réellement le .h du QObject (dans le .cpp de l'utilisateur) pour éviter l'erreur à la compile : "No matching function for call to connect".
CppCheck a l'air d'être un utile pratique pour analyser statiquement du code C++. A intégrer à un Jenkins / Hudson, avec un nightly build des tests unitaires (+ tests d'intégrations automatisés ?) voilà qui serait pratique...
Ne jamais, JAMAIS (jamais !) créer la méthode "connect" dans un QObject en Qt !
Je comprends enfin pourquoi ce fichu signal ne voulait pas se connecter à ce sacré slot ! Eh bah voilà : une méthode "connect" (censée, je cite, "Start the connection to the remote server") qui surcharge bien malencontreusement la méthode "QObject::connect" ce qui nous donne "error : no matching function for call to 'MyGreatObject::connect(AnOtherObject&, const char, MyGreatObject const, const char)'".
C'est bête hein ?
Rah!
QString de Qt : "Tant que l'objet est copié, passé en paramètre, .... l'objet n'est pas dupliqué (tous les objets pointes vers le même espace mémoire)."
Eh je ne savais pas que QString était un QSharedDataPointer ! Bien !
Pourquoi n'est-ce pas le cas des String en Java ? Sur un gros projet auquel je participe, des devs se sont "amusés" à concaténer crapuleusement des String Java. Et hop, une nouvelle instance de String à chaque fois ! La mémoire globale le ressent... et franchement, on n'avait pas besoin de ça !
Mon point de vue sur l'injection de dépendances en C++ : à la main ! Parce que pour l'instance, il n'y a pas de container suffisamment léger et non-intrusif.
J'utilise assez souvent LINE ou FILE en PHP pour récupérer respectivement le numéro de la ligne courante, et le nom du fichier courant, et je savais que cela venait du C. Je n'avais jamais remarqué que ces macros existent donc aussi en C++. Pratique pour déboguer !
Voilà qui répond bien à mes questions quant à la modification de paramètres d'une méthode en Java.
Ainsi que ces deux topics :
http://stackoverflow.com/questions/5607773/change-a-functions-arguments-values
http://stackoverflow.com/questions/40480/is-java-pass-by-reference
Ahahah !
Aside: Someone might say, “but can’t someone still write load_widget(some_id).release()?” Of course they can, if they’re pathological; the correct answer is, “don’t do that.” Remember, our concern is to protect against Murphy, not Machiavelli—against bugs and mistakes, not deliberate crimes—and such pathological abuses fall into the latter category.
A part ça, "modern C++" est vraiment puissant ! Je reconnais que pour l'instant j'utilise plutôt Qt et je reste très très loin des "smart pointers". De voir qu'il est possible d'utiliser quelque chose du type "optional