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

création dynamique d'instance qui foire

saleGauss
saleGauss
Niveau 9
11 octobre 2007 à 23:12:26

Bonjour,

voila j´ai un petit pb en c++, un truc qui doit etre tout bete mais je ne vois pas pourquoi à force d´avoir mon enorme code sous les yeux.

J´ai une classe A, et son constructeur A()
dans une fonction f de A, j´appelle plusieurs fois A() ainsi :

A::f()
{
bla1 = new A();
bla2 = new A();
}

Tout en sachant que bla1 et bla2 sont des pointeurs de A et qu´ils appartiennet à ma classe A.

Je demande donc à créer 2 A sur le tas et à garder leur adresse dans a , par l´intermédiaire de bla1 et bla2(où a est le paramètre implicite de f -> c´est l´objet pointé par this quoi)

Et bien le pb c´est que le premier A se crée très bien et son adresse est bien stocké dans bla1 mais l´appel au 2eme constructeur foire et ne me crée pas l´objet.
Le debuggeur me recupere une first chance exception : 0xC0000005: Access Violation.
Je précise que le prog continue à tourner.

Je ne parviens pas à me rappeller les cas classiques qui peuvent faire qu´un deuxieme appel à un constructeur foire et pas le premier.

note1 : mon constructeur est tout ce qu´il y a de plus classique, avec juste une initialisation à 0 et NULL des variables de A.

note2 : A possede en fait deux constructeur A() et A(param).
Dans mes 2 appels j´utilise A(param).

Est-ce que qq a une idée (meme vague) sur le une explication (meme classique) de ce genre d´erreur ?
(nb : en fait je poste aussi parce que d´expliquer mon pb me permet aussi souvent de resoudre mon truc tout seul, mais si vous avez une idée, je suis preneur aussi :d)

Raah c´est le genre de bug qui m´enervent et qui mettent 3heures à etre résolues pour 2*rien.

Argh, encore merci de votre participation !
enjoy !

Int
Int
Niveau 4
12 octobre 2007 à 10:03:14

param est passé a A() par adresse ou par copie ?
Une variable static dans la classe A manipulée par le constructeur ?
Peut etre qu´il faut donner le code complet du constructeur.

godrik
godrik
Niveau 30
12 octobre 2007 à 13:54:01

tu peux donner un code complet ?
On comprendra mieux ce qui se passe.

saleGauss
saleGauss
Niveau 9
12 octobre 2007 à 16:06:53

Int -> (param) est passé par copie (ce sont des nombres flottants).
Oki je vais essayer de poster le code complet ce soir si je n´ai toujours pas réussi à résoudre le truc.
Dans tous les cas j´expliquerais la solution parce que ce bug arrive à bien me tenir en haleine.

En tout cas merci de paticiper, c´est sympa :D

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