CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [C++] Attributs héritages

DébutPage précedente
1
Page suivantePage suivante
Toxik_II Toxik_II
MP
Niveau 5
25 novembre 2015 à 17:49:03

Bonjour,

J'ai un problème sur lequel je bloque depuis un petit temps : Le constructeur de ma classe dérivée appelle le constructeur de la classe mère car ces 2 classes possèdent les mêmes attributs.

Hors, dans les fonctions de surcharges d'opérateur de la classe dérivée, j'ai une erreur à la compilation qui dit

"_values" was not declared in this scoop 

J'en conclus que la classe dérivée n'a pas été bien "construite" car elle n'a pas accès aux attributs, sauriez-vous m'aider à ce sujet? Je débute en c++ et j'ai vraiment du mal :snif:

Voici mon code si cela peut aider :

Classe mère .cpp et .hpp :
http://pastebin.com/5YH5azjd
http://pastebin.com/e0x7X8by

Classe dérivée .cpp et .hpp :
http://pastebin.com/kUpiVDfP
http://pastebin.com/BEKtrNWi

LEpigeon-888 LEpigeon-888
MP
Niveau 10
25 novembre 2015 à 19:05:54

Perso c'est plus l'écriture des fonctions qui me parait bizarre, là tu déclare des nouvelles classes de j'sais pas quoi j'sais pas trop comment à chaque fois :(

Les fonctions sont plutôt censées ressembler à ça :

template <typename T>
T maclasse<T>::operator+(T machin)
{
    //truc
} 

Puis dans le .hpp les fonctions prennent en paramètre un "Elem&" alors que dans le .cpp c'est un "Elem" :(

Message édité le 25 novembre 2015 à 19:06:34 par LEpigeon-888
1234_bou 1234_bou
MP
Niveau 9
25 novembre 2015 à 19:13:35

Je ne peux pas voir ton code pour des raisons personnelles, mais vérifie que les attributs de la classe de base soit protected ou public afin d'en hérité et de pouvoir les initialiser.

Toxik_II Toxik_II
MP
Niveau 5
25 novembre 2015 à 21:02:49

Le 25 novembre 2015 à 19:13:35 1234_bou a écrit :
Je ne peux pas voir ton code pour des raisons personnelles, mais vérifie que les attributs de la classe de base soit protected ou public afin d'en hérité et de pouvoir les initialiser.

Oui oui, les attributs sont bien Protected :)

Le 25 novembre 2015 à 19:05:54 LEpigeon-888 a écrit :
Perso c'est plus l'écriture des fonctions qui me parait bizarre, là tu déclare des nouvelles classes de j'sais pas quoi j'sais pas trop comment à chaque fois :(

Les fonctions sont plutôt censées ressembler à ça :

template <typename T>
T maclasse<T>::operator+(T machin)
{
    //truc
} 

Puis dans le .hpp les fonctions prennent en paramètre un "Elem&" alors que dans le .cpp c'est un "Elem" :(

EN effet j'ai vu cette faute j'ai donc corrigé en

template <typename Elem>
Elem Vector_D<Elem>::Vector_D operator+(Elem a){
    Vector_D<Elem> res(_dim);
    for (std::size_t i = 0; i < _dim; i++) res[i] = _values[i] + a;
    return res;
};

Mais maintenant j'ai :
error: expected initializer before 'operator'

à la deuxième ligne :(

Toxik_II Toxik_II
MP
Niveau 5
25 novembre 2015 à 22:11:21

Je n'ai plus d'erreur de compilation, j'ai uniquement

error: '_dim' was not declared in this scoop

Même chose pour values, et ce pour les 3 operateurs :(

Toxik_II Toxik_II
MP
Niveau 5
25 novembre 2015 à 22:14:47

Quand je fais un

This._dim

Le code fonctionne, mais je voudrais savoir pourquoi, Pourquoi il faut mettre un this pour la classe dérivée mais pas pour la classe mère :(

LEpigeon-888 LEpigeon-888
MP
Niveau 10
26 novembre 2015 à 07:24:05

Il y a toujours le problème du Elem&/Elem, après je sais pas trop si le fait d'utiliser les templates "corrige" le problème tout seul, mais vaudrait quand même mieux changer ça, même si j'pense pas que ça puisse régler ton problème.

Toxik_II Toxik_II
MP
Niveau 5
26 novembre 2015 à 15:59:55

Oui j'ai réglé, c'était pas vraiment une erreur, je modifiais juste mon code et je vous avais envoyé une version non vérifié, my bad ! :desole:

Juste une autre question : Quand j'instancie ma classe dérivée, grâce au constructeur de ma classe mère avec par exemple :

Vector_D<int> test(10);

Pourquoi les 2 premiers éléments du tableau sont toujours des valeurs aléatoires ( suivant la place dans la mémoire) et non des 0 comme le reste des éléments?

Voici le constructeur :


  Vector (std::size_t dim = 0): _dim(dim), _values(new Elem[dim]) {}

Comment faire en sorte que chaque éléments possède aucune valeur? Sans passer par NULL, ou NUL... etc car c'est une classe template, je ne sais pas d'avance si Values contiendra des int, double, float....

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment