CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Déclarations dans une classe c++

le_duche
le_duche
Niveau 10
04 août 2005 à 17:44:01

:salut:

chuis sous DevC++
je voudrais savoir comment je peux faire pour initialiser un vecteur dans une classe :question:

quand je fais

int test[5] = {1,2,3,4,5};

il compile pas.

Je suppose qu´il faut gérer ca avec le constructeur, mais mon vecteur fait 55 éléments, alors ca me gonfle de d´initialiser un par un les éléments...

:merci:

le_duche
le_duche
Niveau 10
04 août 2005 à 22:31:57

:svp:

JeanYvesYves
JeanYvesYves
Niveau 10
05 août 2005 à 09:24:43

Si tu ne peux pas fixer de tableau dur dans les données membres de ta classe, rien ne t´empeche d´en fixer dans un tableau temporaire du constructeur.

class maclasse
{
private :
int test[4];

/ / . .......

maclasse::maclasse()
{
int temp[]={1,2,3,4};
int i;
for(i=0;i<4;i++)
test[i]=temp[i];
}

Voila comment faire :)
Et sinon, y´a d´autres moyens de s´en sortir, comme de faire une fonction a parametres variables :)

Chaos_Clad
Chaos_Clad
Niveau 10
05 août 2005 à 13:00:18

55 éléments ? :doute: :peur: :mort:

Chaos_Clad
Chaos_Clad
Niveau 10
05 août 2005 à 14:44:24

Et avec la généricité ou push_back on peut pas ? Bon en même temps, je dis ça, mais j´en sais absolument rien :doute:

le_duche
le_duche
Niveau 10
05 août 2005 à 17:41:49

c´est pour un jeu de scrabble...
y a 27 lettres x 2 + 1
voilà pourquoi 55
et comme ce sont des chiffres propres au jeu, ben je dois faire au cas par cas...

JeanYvesYves
JeanYvesYves
Niveau 10
05 août 2005 à 17:55:40

Chaos_Clad > le push_font permet d´ajouter un élément a la fois :)

Je pense que la bonne méthode, c´est le tabnleau statique a l´intérieur d´une méthode, comme l´exemple ci dessus :)

le_duche
le_duche
Niveau 10
05 août 2005 à 18:24:17

voilà, pour ceux que ca interesse, je suis oqp à faire ca... je sais pas si c´est des bonnes idées, c´est mon premier projet d´envergure...

  1. include < time.h>

using namespace std;

const char cLettreVide = ´_´; / /caractère \95 afin d´éviter les bugs avec \0

const char cBlanc = ´{´; / /caractère qui suit le ´z´ dans les code ASCII

struct Element_List_Int

{

int i;

struct Element_List_Int* p;

};

typedef Element_List_Int ListInt;

struct coordonnee_de_placement / /détermine les charactéristiques d´un pion

{

int lig; / /ligne de la lettre sur le plateau

int col; / /colonne de la lettre sur le plateau

char lettre; / /lettre en question;

};

typedef struct coordonnee_de_placement coord;

struct placement

{

coord pl[7]; / /tableau des pions placés

int nbr; / /nbr de pions placés

};

typedef struct placement place;

struct historique

{

char chevalet[7]; / /chevalet au début du tour

place pl; / /tour joué par le joueur

int points; / /points rapportés par ce tour

struct historique* p; / /vers le tour précédent

};

typedef struct historique hist;

struct un_joueur

{

char nom[15]; / /nom du joueur

historique* h; / /historique des coup de ce joueur en liste ( dernier au 1er)

int TotPts; / /total des points du joueur

char Chevalet[7]; / /chevalet en cours de partie

};

typedef struct un_joueur joueur;

class nouvelle_partie

{

public:

nouvelle_partie(const int n = 4,

char nom1[15] = " Sans Nom 1",

char nom2[15] = " Sans Nom 2",

char nom3[15] = " Sans Nom 3",

char nom4[15] = " Sans Nom 4",

int d) / /Constructeur

{

/ /Initialisation du nombre de joueurs et de ceux-ci pour cette partie

nNbrJrs = n;

for(int i=0;i<15;i++)

{

Jrs[0].nom[i] = nom1[i];

Jrs[1].nom[i] = nom2[i];

Jrs[2].nom[i] = nom3[i];

Jrs[3].nom[i] = nom4[i];

}

for(int i=0;i<4;i++)

{

Jrs[i].h = NULL;

Jrs[i].TotPts = 0;

for(int j=0;j<7;j++)

Jrs[i].Chevalet[j] = cLettreVide;

}

/ /Initialisation du niveau de difficulté

nDifficult = d;

/ /Initialisation des tableaux iMotCompte[15,15] et iLettreCompte[15,15]

for ( int i=0;i<8;i++)

for ( int j=0;j<8;j++)

nMotCompte[i,j] = nLettreCompte[i,j] = 1;

nMotCompte[0,0] = 3;

nMotCompte[0,7] = 3;

nMotCompte[1,1] = 2;

nMotCompte[2,2] = 2;

nMotCompte[3,3] = 2;

nMotCompte[4,4] = 2;

nMotCompte[7,0] = 3;

nMotCompte[7,7] = 2;

nLettreCompte[0,3] = 2;

nLettreCompte[1,5] = 3;

nLettreCompte[2,6] = 2;

nLettreCompte[3,0] = 2;

nLettreCompte[3,7] = 2;

nLettreCompte[5,1] = 3;

nLettreCompte[5,5] = 3;

nLettreCompte[6,2] = 2;

nLettreCompte[6,6] = 2;

nLettreCompte[7,3] = 2;

for ( int i=0;i<8;i++)

for ( int j=0;j<8;j++)

{

nMotCompte[14-i,j] = nMotCompte[i,14-j]

= nMotCompte[14-i,14-j] = nMotCompte[i,j];

nLettreCompte[14-i,j] = nLettreCompte[i,14-j]

= nLettreCompte[14-i,14-j] = nLettreCompte[i,j];

}

/ /Initialisation du tableau cPioche[102]

char cInitPioche[102];

for ( char a=´a´;a<=cBlanc;a++)

for ( int i=0;i<nFreqLettre[a-97];i++)

cInitPioche[i+a-97] = a;

for(int i=0;i<102;i++)

{

int r = rand()%(102-i);

cPioche[i] = cInitPioche[r];

for(int j=r;j<101-i;j++)

cInitPioche[j] = cInitPioche[j+1];

}

nNbrRstPioche = 102;

/ /Initialisation du tableau cPlateau[15,15]

for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

cPlateau[i,j] = cLettreVide;

/ /Initialisation des chevalets

for(int i=0;i<nNbrJrs;i++)

ReAppChevalet(Jrs[i].Chevalet,7);

/ /Initialisation de l´ordre des joueurs et du premier à jouer

int nInitOrdre[4] = {0,1,2,3};

ListInt* p = new(ListInt);

JrActif = p;

for(int i=0;i<nNbrJrs;i++)

{

int r = rand()%(nNbrJrs-i);

p->i = nInitOrdre[r];

for(int j=r;j<nNbrJrs-i-1;j++)

nInitOrdre[j] = nInitOrdre[j+1];

p->p = new(ListInt);

p = p->p;

}

delete(p);

p = JrActif;

/ / / /Chargement du dico

/ /

/ /

/ /

/ /

/ /

/ /

/ /

/ /

} / /Fin du constructeur

~nouvelle_partie() / /Destructeur

{

}

int nNbrJrs; / /nombre de joueurs pour cette partie ( 1 à 4)

joueur Jrs[4]; / /Tableau contenant les joueurs

ListInt* JrActif; / /pointe vers le joueur actif

int nDifficult; / /Difficulté ( 0 à 3 ~~ facile à pro)

char cPlateau[15,15]; / /plateau de placement des lettres

int nMotCompte[15,15]; / /plateau des mots x2 et x3

int nLettreCompte[15,15]; / /plateau des lettres x2 et x3

int nPosBlancs[2,2]; / /position des deux pions blancs

protected:

char cPioche[102];

int nNbrRestPioche;

int
nFreq[27]={9,2,2,3,15,2,2,2,8,1,1,5,3,6,6,2,1,6,6,
6,6,2,1,1,1,1,2};

int
nPoint[27]={1,3,3,2,1,4,2,4,1,8,10,1,2,1,1,3,8,1,1
,1,1,4,10,10,10,10,0};

};

int main()

{

srand(time(NULL));

}

Si il y a des trucs qui courent à la catastrophe :honte: dites le moi tout de suite !

le_duche
le_duche
Niveau 10
05 août 2005 à 18:27:48

c´est pas du flood :peur:
meme si c´est un peu long...

Kilyn_
Kilyn_
Niveau 10
08 août 2005 à 22:37:34

Pourquoi tu ne fais pas de classes au lieu de structure. Par exemple pour le nombre de pions placées n´importe qui peut le modifier. Alors qu´en le mettant comme une donnée privée d´une classe publique ben il faudrait passer par une méthode pour récupérer sa valeur et une autre pour la renseigner. En effet, la programmation orientée objet permet de séparer certaines parties de ton code réutisable par quelqu´un d´autres. Dans ton cas tu es à la fois le concepteur et l´utilisateur de tes objets mais quelqu´un d´autre peut très bien être uniquement l´utilisateur de ces mêmes objets sans savoir comment c´est codé. Enfin je chipotte sûrement et je ne suis peut-être pas très claire mais si quelqu´un m´a saisie qu´il réexplique. Enfin je trouve ça mieux avec des classes comme ça t´as une méthode AfficheNbPionPlacés par exemple. :-)))

le_duche
le_duche
Niveau 10
09 août 2005 à 18:15:10

ouais je vois ce que tu veux dire, mais comme ce sont des algorithme propres au jeu en lui meme, je vois pas l´intéret d´interdire l´acces à qui voudrais utiliser ma procédure...

Je fais des structures simplement pour plus de clarté dans le code... et pous ne pas me retrouver avec une tonnes de tableaux que je ne saurais plus comment nommer...

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment