IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

Vector bool, bidimensionnel


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 34
    Par défaut Vector bool, bidimensionnel
    Bonjour, j'ai un problème avec le code suivant et je n'arrive pas à comprendre pourquoi j'ai une telle erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // Test dans les deux collision tables
     
    	bool mytest1 = false;
    	bool mytest2 = false;
     
    	for( int i = 0; i < (rect_Bottom - rect_Top); i++ )
    	{
    		for( int j = 0; j < (rect_Right - rect_Left); j++ )
    		{
    			mytest1 = FirstSprite->GetCollisionTable()[rect_Top - TOP1 + i][rect_Left - LEFT1 + j];
    			mytest2 = SecondSprite->GetCollisionTable()[rect_Top - TOP2 + i][rect_Left - LEFT2 + j];
    			if( ( mytest1 & mytest2 ) == true )
    				return COL_DETECTED;
    		}
    	}
    GetCollisionTable() est une référence à un vector<vector<bool>> :
    typedef std::vector<bool> TBoolArray;
    typedef std::vector<TBoolArray> TBoolMatrix;

    Le test sur la CollisionTable du FirstSprite marche bien, mais la ligne d'en dessous, la collision table du SecondSprite, fait planter le programme en me renvoyant une erreur, lorsque le résultat est true uniquement. J'ai vérifié, il n'y a pas de débordement.
    L'erreur concerne donc vector.

    Je crois que ce n'est pas la bonne méthode pour vérifier ces matrix, si ?

  2. #2
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    Quelle est le message de l'erreur?

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 34
    Par défaut
    Voilà l'erreur :


  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ca ressemble quand même fortement à un dépassement de capacité, vu l'assertion qui a echoué...

    Et puis lorsque ce message s'affiche, il te suffit de cliquer sur "recommencer" pour debugger ton appli et voir tout de suite ce qui cloche.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 34
    Par défaut
    hum oui, mais à part m'emmener là, ça m'avance pas beaucoup de cliquer sur recommencer : _SCL_SECURE_VALIDATE_RANGE((this->_My_actual_offset() + _Off) <= ((_MycontTy *)this->_Mycont)->_Mysize);

    Bref, j'ai débugué pas à pas et j'ai vérifié les valeurs, il n'y a pas de dépassement pourtant.
    Exemple : Accès à SecondSprite->GetCollisionTable()[0][104]
    Ma collision table : ColTable[47][105]

    Ca plante quand même.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    hum oui, mais à part m'emmener là, ça m'avance pas beaucoup de cliquer sur recommencer : _SCL_SECURE_VALIDATE_RANGE((this->_My_actual_offset() + _Off) <= ((_MycontTy *)this->_Mycont)->_Mysize);
    Pour ça il faut utiliser la pile d'appels, pour remonter jusqu'à l'endroit de ton code qui a mené à cette ligne.

    Tu peux aussi afficher dans la fenêtre "watch" du debogueur les variables incriminées, vérifier qu'il y a effectivement un problème, et remonter les fonctions (toujours avec la pile d'appels) pour voir à quel moment la valeur incorrecte est introduite.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/11/2012, 14h37
  2. [FAQ] vector<bool>, spécialisation du standard
    Par Aladore dans le forum Contribuez
    Réponses: 3
    Dernier message: 20/08/2010, 10h50
  3. Obtenir l'adresse du contenu d'un std::vector<bool>
    Par camboui dans le forum SL & STL
    Réponses: 11
    Dernier message: 23/10/2009, 14h29
  4. Tableau bidimensionnel de Vector
    Par j0o0 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 05/05/2007, 19h51
  5. vector<bool> comme argument de fonction
    Par Krishna dans le forum SL & STL
    Réponses: 11
    Dernier message: 09/09/2004, 08h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo