1350

Bah oué, mais bon en réalité je m'en sers pas du tout dans le même contexte que les classes anonymes Java, c'est pour ça que ça ne m'a pas sauté aux yeux tongue
Ce que j'appelle les types anonymes (et non classes, parce que c'est général) j'utilise par exemple pour les machines d'état:
enum {Start, Working, End} state = Start;
...
state++;

Ou à la limite pour des trucs bien dégueu mais compacts genre:
struct {
    char c;
    Token tokType;
} uniCharTokDict[] = {
    {'(', T_LEFTPAR},
    {')', T_RIGHTPAR},
    {'.', T_DOT},
    ...
};
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

1351

trilove c'te horreur trilove

(c'est génial le C ^^)

1352

./1350 > Ahlàlà, tu aurais du te référrer à la définition de anonyme avant. #trilangue1361#
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

1353

public class Anonymous {
  public String toString() {
    return "tits or gtfo, lulz";
  }
}

1354

./1352> Ha oué pardonne moi ^^
./1353> (ta classe n'est même pas anonyme squalyl...)
System.out.println(
    new Object() {
        public String toString() { return "M4demoiselle, veuillez avoir l'amabilité de montrer vos tits"; }
    });
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

1355

if(!tits) gtfo();

bon, on va arrêter avant que Folco fasse les gros yeux ^^ dehors

1356

+@Override embarrassed

1357

1358

Note quand même qu'on a la possibilité en C++ de simuler un peu les classes anonymes:struct Object { string toString(); }; int main() { struct: Object { string toString() { return "tits"; } } obj; cout << obj.toString(); return 0; }
Le souci c'est que l'objet anonyme ne peut pas avoir de constructeur, donc on perd beaucoup de l'intérêt qu'on aurait en Java. Et aussi il faut forcément en déclarer une variable, mais c'est un moindre problème, ça empêcherait juste l'exemple que j'ai fait plus haut.
Pen^2 (./1356) :
+@Override embarrassed

Ca compile sans embarrassed
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

1359

typedef struct
{
    int (*Load)();          /* Constructor */
    void (*Unload)();       /* Destructor */
    void (*Manage)();       /* Management handler */
    MODULE_DATA* Data;      /* Used data */
} MODULE;

Boah, j'men va aller faire du C++ en C, avec les avantages du C et pas les contraintes du C++ embarrassed

1360

Pourquoi des noms de fonction en UpperCamelCase sad ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

1361

Oh ben si ya que ça qui te dérange, je peux leur donner des nomDeMéthodes hein grin
(et c'est vrai que c'est plus cohérent avec les fonctions de la lib standard)

1362

1363

Si ça peut te dissuader, sache que c'est en C# qu'on utilise cette notation ^^ En fait tout ce qui est privé est en minuscule, et le reste en majuscule:
class Test
{
    int variablePrivée;
    public int PropriétéPublique {
        get { return variablePrivée; }
    }
}

En gros si je ne me trompe pas on a:
nomDeVariable -> C++
nomdevariable -> C
Nom_De_Variable -> Ada
NomDeVariable -> C#
nom_de_variable -> C quand moi j'en fais
nom.de.variable -> Java (troll)
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

1364

En prolog aussi, les identificateurs qui commencent par une majuscule ou par une minuscule n’ont pas la même sémantique smile
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

1365

Intéressant, j'en ai pas fait assez loin pour savoir ce genre de choses. Et notre prof ne nous a pas vraiment appris à coder bien ^^ C'était surtout les concepts qu'on a vu wink
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

1366

GoldenCrystal (./1327) :
Ah, grâce à JackosKing, j'ai compris le problème \o/
Je sais toujours pas à quoi servent tes task et tes modules, mais en gros, les méthodes d'action devraient se situer dans une classe plus générale, disons une classe "Main" (parce que je comprends pas ton architecture de task et module tongue), qui serait un singleton. (ça t'évite de passer l'instance de partout même si ça serait une manière plus propre de faire)
Dans ta classe Main tu as par exemple DoAddUnit(), DoKillSelectedUnits(), DoBuyItem(), etc. (ce sont des exemples, et je met le Do ici pour bien montrer que ce sont des actions, mais en vrai on s'en fout ^^).
Ensuite, tu peux avoir ton fichier de définition d'icônes. Par exemple:// Classe Icon de base class Icon { const std::string title; const std::string image; // En vrai il faudrait peut être stocker une ressource SDL à la place public: Icon(const std::string& title, const std::string& image) : title(title), image(image) { } const std::string& getTitle() { return title; } const std::string& getImage() { return image; } virtual void Action() = 0; }; #define REGISTER_ICON(title, image, action) class action ## Icon : public Icon { public: action ## Icon () : Icon(title, image) { } void Action() { Main::getInstance(). ## action ## (); } }; REGISTER_ICON("Buy Item", "buy.png", DoBuyItem) REGISTER_ICON("Kill Units", "kill.png", DoKillSelectedUnits) // Etc.Y'a moyen de faire mieux (c'est un exemple semi à l'arrache, idéalement tu pourrais même utiliser des classes anonymes pour les icônes, sous certaines conditions) et je suis pas complètement sur de pas m'être foiré sur la macro, mais bon tongue


Mouai déjà utiliser le preprocesseur pour ca c'est crade, mais en plus je vois pas ce qu'on y gagne:/
Folco, tu peux donner tes sources aussi wink

1367

Brunni (./1363) :
Si ça peut te dissuader, sache que c'est en C# qu'on utilise cette notation ^^ En fait tout ce qui est privé est en minuscule, et le reste en majuscule:
Et c'est vachement plus joli à lire aussi. Surtout qu'en général on commence les phrases en majuscules, donc je vois pas quelle raison logique il y a de faire l'inverse en mettant tout en majuscule sauf le premier mot tongue
En gros si je ne me trompe pas on a:
nomDeVariable -> C++
nomdevariable -> C
Nom_De_Variable -> Ada
NomDeVariable -> C#
nom_de_variable -> C quand moi j'en fais
nom.de.variable -> Java (troll)
Que dalle oué. Jamais aucune notation n'est imposée. Sauf en Java parce que c'est un langage rigide et obsolète qui pleurniche si ses classes sont pas bien fichues exactement comme il faut au bon endroit dans le bon espace-temps.
C++ -> As you wish.
C -> As you wish.
C# -> Notation de la BCL (fortement) conseillée. Tu fais ce que tu veux de tes membres privées, on est pas sensé les voir. (À noter, que CLS interdit de distinguer deux membres juste par la casse des caractères. En fait, le C# n'est pas conforme CLS.)
Java -> Attention faut bien nommer tes classes avec une grande majuscule et tes paquets avec que des minuscules, et tes membres de classes tous sans exception avec une minuscule au début.
(Les autres langages j'en ai jamais fait donc je peux pas dire, mais je sais qu'il existe des trucs tordus partout, y'a bien des langages où l'indentation à une signification sémantique précise…)
En fait, la notation du Java n'aurait aucun sens en C# car on a des propriétés ( love ) donc pas de « getSomething() » ou de « setSomething(int value) », on a juste « Something »

Sinon Folco, c'est pas bon. Ce que tu veux écrire, c'est:typedef struct { struct { int (*init)(); /* Constructor */ void (*destroy)(); /* Destructor */ } *pVtbl; } OBJECT; typedef struct { struct { int (*init)(); /* Constructor */ void (*destroy)(); /* Destructor */ void (*Manage)(); /* Management handler */ } *pVtbl; MODULE_DATA* Data; /* Used data */ } MODULE;tongue
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

1368

Alors tu peux me donner ton idée Jackos stp ? grin

Golden, oui, sûrement, mais je vais faire avec et ça me suffit tongue

1369

JackosKing (./1366) :
Mouai déjà utiliser le preprocesseur pour ca c'est crade, mais en plus je vois pas ce qu'on y gagne:/
C'est pour réduire la redondance de code, et rendre le truc plus facilement modifiable. Ça te fait une macro à modifier (mais je suis d'accord on peut améliorer) au lieu de N classes. (Si jamais tu veux modifier quelque chose bien sûr)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

1370

Folco (./1368) :
Alors tu peux me donner ton idée Jackos stp ? grin

Golden, oui, sûrement, mais je vais faire avec et ça me suffit tongue

Me faut ton code

1371

Oki.

1372

JackosKing (./1370) :
Me faut ton code pour le revendre.
trioui
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

1373

Non pour le distribuer sous gpl 2.0 (mode KK power lol...)

1374

GC> J'ai pas dit que c'était imposé, mais c'est comme ça que ça se fait en général wink
Sauf dans certains langages où la sémantique découle de ce genre de détails (je pense notamment au Python et son indentation comme tu l'as évoqué).
CLS c'est la Common Language Specification de MS c'est juste? Si même eux ne sont pas foutus de respecter leurs standards avec C# je ne crois pas qu'on puisse en tenir compte le moins du monde tongue
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

1375

GoldenCrystal (./1372) :
JackosKing (./1370) :
Me faut ton code pour le revendre.
trioui

trinon
C'est lui qui va payer (très cher) pour le refourguer ^^

1376

Brunni (./1374) :
CLS c'est la Common Language Specification de MS c'est juste? Si même eux ne sont pas foutus de respecter leurs standards avec C# je ne crois pas qu'on puisse en tenir compte le moins du monde tongue
Ça décrit juste un système permettant l'inter-opérabilité entre différents langages. CLS != CLR. smile
Y'a des langages comme VB (et pas mal d'autres notamment Java, il me semble) qui n'autorisent pas les entiers non signés => CLS non plus. Certains langages sont insensible à la casse (VB encore tongue) => CLS suit cette règle. De même les pointeurs ne sont pas conformes CLS. (Tout cela étant malgré tout supporté par le CLR et utilisé en C#. Le C# peut générer du code conforme CLS, mais il peut aussi facilement en générer qui ne l'est pas… Le compilateur sait vérifier ça. ^^)
Les normes sont assez complètes et ont été déposées à l'ECMA et à l'ISO donc bon, ne te fais pas trop de souci, c'est pas vraiment attaquable. tongue
[/HS]

Folco > Qui sait ce que les gens seraient prêt à payer pour avoir un authentique Folco™ encadré dans leur salle de séjour… #triprie#
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

1377

GoldenCrystal (./1367) :
Sauf en Java parce que c'est un langage rigide et obsolète qui pleurniche si ses classes sont pas bien fichues exactement comme il faut au bon endroit dans le bon espace-temps.
C++ -> As you wish.
C -> As you wish.
C# -> Notation de la BCL (fortement) conseillée. Tu fais ce que tu veux de tes membres privées, on est pas sensé les voir. (À noter, que CLS interdit de distinguer deux membres juste par la casse des caractères. En fait, le C# n'est pas conforme CLS.)
Java -> Attention faut bien nommer tes classes avec une grande majuscule et tes paquets avec que des minuscules, et tes membres de classes tous sans exception avec une minuscule au début.

Complètement faux!
En Java la seule contrainte est que les fichiers doivent avoir le même nom que le code leur correspondant. Au début ca m'a paru une contrainte mais dans la pratique ça ne m'a jamais posé de problème. C'est plutôt une bénédiction pour la lisibilité.

Les classes et packages peuvent techniquement contenir autant de majuscules et minuscules (et même de caractères non ascii) que tu le souhaites à la seule condition que les fichiers et répertoires correspondants aient le même nom case comprise.

ficielles qui sont d'utiliser les notations suivantes:MaClasse maVariable MA_CONSTANTEIl existe des recommandations of

Personnellement je trouve que c'est le mieux. Il y a des recommandations officielles (pas trop mauvaises à mon gout) et plutôt bien respectées par les bibliothèques tierces, tutoriels, ... ce qui donne une lecture plus aisée des documents.
Il n'y a cependant pas d'obligation forte de les utiliser.
avatar

1378

GoldenCrystal (./1367) :
Java -> Attention faut bien nommer tes classes avec une grande majuscule et tes paquets avec que des minuscules, et tes membres de classes tous sans exception avec une minuscule au début.


c'est une blague ? trifus

Aoa1

(cross)

D'ailleurs
Uther (./1377) :
Personnellement je trouve que c'est le mieux. Il y a des recommandations officielles (pas trop mauvaises à mon gout) et plutôt bien respectées par les bibliothèques tierces, mais aucune obligation de les utiliser.


au boulot le PDG nous oblige à utiliser vLocale, gGlobale, fChampClasseOuStruct, inParmètreEntrant, ioParamètre e/s, outParamètreSortie. Ca m'a fait mégachier au début mais en fait c'est pas mal. Genre au lieu de
public void Constructeur(int genre) {
    this.genre = genre;
}

tu fais
public void Constructeur(int inGenre) {
    fGenre = inGenre;
}

1379

GoldenCrystal (./1376) :
Folco > Qui sait ce que les gens seraient prêt à payer pour avoir un authentique Folcoâ„¢ encadré dans leur salle de séjour… triprie.img

Nooon, le crois-tu vraiment ? #faussement_modeste#














Bon ok dehors

1380

C'est certes pas obligatoire mais chaudement recommandé !