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

a beu te beu cretinattitude

SuperDindon
SuperDindon
Niveau 8
25 mai 2003 à 18:56:49

petit blem en C++, je n´arrive pas à initialiser une variable structure dont la structure justement a hérité d´une autre

par ex.:

struct Blade
{
unsigned int kills;
}

struct Mouton : Blade
{
char *cridumouton;
}

Je teste ma structure et son héritière dans une fonction:

void test()
{
Blade hu = {255}; //ici po de probleme
Mouton ho = {65535,"beeehihihi"}; //erreur de compilation ici
}

Et donc voilà le compilo interprète ma structure Mouton comme une classe et demande de l´initialiser avec un constructeur

Où est l´erreur?

hs_dino
hs_dino
Niveau 9
25 mai 2003 à 20:57:38

Justement, une structure EST une classe à la seule différence que le public est explicite au lieu de private.

Ensuite, il n´est possible d´initialiser que des éléments " agrégats". La structure Blade est un agregats, ce qui n´est pas le cas de structure Mouton car elle est dérivée.

Rappel : Un agregat peut etre :
- un Tableau
- une Classe/Structure/Union dépourvue de Constructeurs, membres privés ou protégées, classes de base, fonctions virtuelles

Dino
Programmeur
The Zythum Project
http://www.zythum-project.com

SuperDindon
SuperDindon
Niveau 8
26 mai 2003 à 10:40:38

ok Dino mais je suis quasiment sûr qu´il y a un moyen pour indiquer qu´on veut qu´elle soit interprétée comme une structure de base.
même d´ailleurs que je crois que c´est toi qui avait parlé un coup de rajouter des membres avec typedef. J´ai essayé plusieurs combis mai jai toujours pas trouvé la syntaxe.
Le ciel est sombre et la nuit noire, éclaires mon chemin STP!

JeanYvesYves
JeanYvesYves
Niveau 10
26 mai 2003 à 11:38:33

héritage avec des structs ? j´ai jamais vu ça ! !
Utilise des classes !

SuperDindon
SuperDindon
Niveau 8
26 mai 2003 à 12:02:07

Non là dans mon cas j´ai besoin d´avoir accès aux membres avec des pointeurs(dans le genre ici ( ho)+4 pour retrouver le membre cridumouton).
Sinon aussi avec une classe j´aurais besoin du constructeur, et il reste qu´à comparer:un peu plus de 2 instructions pour le processeur en plus et la lecture d´une adresse supplémentaire(celle du constructeur), très méchante si la page dont elle fait partie a été swappée(perte de plusieurs ns par rapport à une adresse dans la RAM).
Comment ça moi pointilleux?

MlsterUP
MlsterUP
Niveau 1
27 mai 2003 à 08:00:24

UP! Just a little UP!!!

SuperDindon
SuperDindon
Niveau 8
27 mai 2003 à 15:25:59

Helpez moi SVP!

Kouic
Kouic
Niveau 9
27 mai 2003 à 16:50:34

" si la page dont elle fait partie a été swappée(perte de plusieurs ns par rapport à une adresse dans la RAM). "

Je paris ma chemise que tu ne verras aucune difference de perf en utilisant une classe.
Favorise la structure de ton code plutot que d´essayer de grapiller de ridicules nanos secondes.

SuperDindon
SuperDindon
Niveau 8
28 mai 2003 à 07:14:50

Non c´est vraiment ultraimportant que je puisse initialiser mes structures de cette façon, ce n´est pas vraiment les ns gagnées qui me poussent à faire ça tinquiètes

Passage
Passage
Niveau 10
28 mai 2003 à 12:18:30

Parsonnelement j´utilise un compilateur C.
Chais pas si cela va t´aider mais je tente quand meme. Le plus rapprochant de ce que tu veux faire c´est un truc comme cela :

typdef struct S_BASE
{
int a;
int b;
}T_BASE;

typdef struct S_HERITE
{
T_BASE;
int c;
int d;
}T_HERITE;

/*
Warning du compilo pour le non nomage mais cela passe.
Je pense que sur certains compilateurs cela ne marche pas mais je n´en n´ai pas la confirmation.

  • /

T_HERITE Var ={ 10, 100,1000, 12};

SuperDindon
SuperDindon
Niveau 8
28 mai 2003 à 19:22:35

Nan ça marche po(j´ai GCC)

on est obligé d´initialiser la structure T_BASE séparément, c´est à dire du genre:

T_HERITE Var = {{20,50},90,150};

et surtout on ne peut plus accéder normalement aux membres de T_BASE(forcé de passer par des pointeurs) vu que le membre n´a plus de nom

en clair ç´est po bon du tout

SuperDindon
SuperDindon
Niveau 8
29 mai 2003 à 10:20:58

Voilà en fait avec G++ ça ne sert à rien de déclarer la structure sans nom de variable(même avec struct derrière) puisqu´il ne la prend même pas en compte(là pour ta structure T_HERITE il me retourne 8 oct avec sizeof).

Je n´ai pas encore essayé avec un . c et GCC je vais le faire de suite

SuperDindon
SuperDindon
Niveau 8
29 mai 2003 à 10:26:13

Beuh non ça marche toujours po

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