Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur membre de classe indéfini

    8 mai 2022 à 1:55:25

    Bonsoir,

    J'ai cette erreur là dans deux de mes fichiers Parser.h et Override.h :

    #ifndef C_OVERRIDE_H 
    #define C_OVERRIDE_H 2
    
    #include <iostream>
    #include <assert.h>
    #include <cstring>
    #include <stdio.h>
    #include <stdlib.h>
    #include <fstream>
    #include <cctype>
    
    #include "CMatrix.h"
    #include "CException.h"
    
    
    #pragma warning(disable : 4996)
    #pragma warning(disable : 4244)
    #pragma warning(disable : 4430)
    
    using namespace std;
    
    template <class MType> class COverride {
    public :
    	//CMatrix<MType> operator*(CMatrix<MType> MATMatrix,const double MTYElement);
      CMatrix<MType> operator*(const double MTYElement, CMatrix<MType> MATMatrix);
    
    };
    
    
    
    template<class MType> CMatrix<MType> COverride<MType> ::operator*(const double MTYElement, CMatrix<MType> MATMatrix) {
    
        CMatrix<MType> MATRes = CMatrix<MType>(MATMatrix);
    
        uiMATNbRow = MATMatrix.MATGetNbRow();
        uiMATNbColumn = MATMatrix.MATGetNbColumn();
    
        unsigned int uiRow = 0;
        unsigned int uiColumn = 0;
    
        for (unsigned int uiRow = 0; uiRow < uiMATNbRow; uiRow++) {
            for (unsigned int uiColumn = 0; uiColumn < uiMATNbColumn; uiColumn++) {
                MATRes.MATModifyElement(uiRow, uiColumn, MATMatrix.MATGetElement(uiRow, uiColumn) * MTYParam);
            }
        }
        return MATRes;
    }#endif

    Avec ce code la pour Override.h, queql'un peut m'aider à y voir plus clair?

    • Partager sur Facebook
    • Partager sur Twitter
      8 mai 2022 à 2:44:15

      Salut,

      Tu définis des valeurs pour les données connues sous les doux noms de uiMATNbRow et uiMATNbColumn au lignes 35 et 36.  Mais où ces données sont elles déclarées?

      Car, si le compilateur n'en sait pas plus que moi, il ne sait pas quel est le type de ces données, qu'il ne connait purement et simplement pas à  au moment où il traite ces deux lignes de code.  Il est donc tout à fait logique qu'il ne soit pas content ;)

      • Partager sur Facebook
      • Partager sur Twitter
      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
        8 mai 2022 à 21:35:14

        Et tu définis un opérateur * qui multiplie un COverride par 2 choses, il y a un terme de trop!
        • Partager sur Facebook
        • Partager sur Twitter

        En recherche d'emploi.

          9 mai 2022 à 9:41:30

          Merci beaucoup oui c'était le problème de la surchage de l'opérateur* qui devrait être hors classe ! Merci à vous deux !
          • Partager sur Facebook
          • Partager sur Twitter

          Erreur membre de classe indéfini

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown