| |  |
| T'habites à combien de kilomètres de Tours ? |
mercredi 14 mai 2008 |
| lundi 05 novembre 2007 |
| 23:20 » Déclarer une variable membre statique en C++ (ou - programmation, informatique |
Si vous aussi, après plusieurs années d'abstinence, vous replongez vos p'tites mains délicates dans la boue verdâtre et bouillonnante du C++, je vous promets de nombreuses séances d'arrachages de cheveux. Pour vous en éviter une et ainsi contribuer à leur préservation, voici un tutorial trodlabal intitulé :
Déclarer une variable membre privée statique en C++<
// Dans la classe, ça se passe comme on s'y attendrait
// (modulo le fait qu'on ne peut pas initialiser les variables si elles ne sont pas const)
class MaSuperClasse
{
public:
static int m_publique;
private:
static int m_privee;
};
// En revanche, ensuite ça devient surnaturel :
// Il faut *redéclarer* les variables
// (cette correction vous est offerte par snihf)
// avec du code en vrac, comme ça.
int MaSuperClasse::m_publique = 0;
int MaSuperClasse::m_privee = 0;
}
Voilà, moralité : C# et Java sont quand même bien confortables :)
Petite explication de cette bizarrerie par l'ami snihf :
Une variable membre d'instance d'une classe est déclaré dans la déclaration de la classe, et défini lors de l'instanciation de la classe. Pour un membre statique, il n'y a pas d'instanciation, il est donc nécessaire de le définir à part, dans un fichier de définitions.
|
| musical cue : Santana - Let The Children Play |
|
| mardi 06 novembre 2007 - 23:30 |
Hmm, tu confonds déclaration et définition. En fait quand tu comprends comment fonctionne C++, c'est logique que ça soit comme ça, mais ça n'empêche pas que le langage est sale et sa syntaxe incohérente sur bien des points.
Je ne connais pas le C#, mais le Java est clairement un vrai plaisir en comparaison du C++, je peux pas dire le contraire :) |
| snihf |
| (http://www.valombre.net/blog/) |
|
| mercredi 07 novembre 2007 - 00:39 |
Hop, c'est corrigé, autant pour moi.
Note qu'avec de la mauvaise foi ça se défend : pour les int, la déclaration et la définition interviennent au même moment (à moins que ça ne soit différent pour les variable statiques ?), donc c'était pas faux ;-P
Cela dit, c'est effectivement sur la redéclaration que je voulais porter l'attention, donc je te remercie :) |
| nop |
| (http://www.peuw.net) |
| musical cue : Santana - Aqua Marine |
|
| mercredi 07 novembre 2007 - 18:27 |
meuh non ! C++ rocks ! zy connaissent rien ces jeunes ;o) |
| Koala |
| (http://www.pompompom.net) |
|
| mercredi 07 novembre 2007 - 18:51 |
En fait c'est justement différent pour les variables statiques. Une variable membre d'instance d'une classe est déclaré dans la déclaration de la classe, et défini lors de l'instanciation de la classe. Pour un membre statique, il n'y a pas d'instanciation, il est donc nécessaire de le définir à part, dans un fichier de définitions.
|
| snihf |
| (http://www.valombre.net/blog/) |
|
| samedi 10 novembre 2007 - 14:19 |
Koala> Rappelle-moi, ça fait combien d'années que t'as pas codé ? :-)
snihf> Hmm hm, d'accord.
Je me suis permis d'ajouter ton explication à la fin du post, dis-moi si ça te gêne. |
| nop |
| (http://www.peuw.net) |
| musical cue : Willbe - Wicked cabaret posse |
|
| Réagir : |
Le html n'est pas autorisé, pour mettre en forme vos textes, utilisez les codes suivants:
* [b]gras[/b]
* [u]souligné[/u]
* [i]italique[/i]
* [s]barré[/s]
* [sup]exposant[/sup]
* [url=http://www.monlien.com]texte du lien[/url] (pour les feignants, sachez que tout texte de la forme http://quelquechose sera automatiquement transformé en lien)
* [img]http://www.monlien.com/monimage.jpg[/img]
* [center]texte centré[/center]
* [quote]citation[/quote]
* Toute ligne commençant par "/me" sera remplacée à la sauce IRC. Si votre pseudo est Martine et que vous inscrivez :
/me va à la plage
Le résultat sera :
* Martine va à la plage
* [mp3]http://www.monlien.com/mamusique.mp3[/mp3]
* [code language="C#|php|vb.net|etc..."]public void DuCode() { }[/code]
|
back!
|
|
|