bonjour tout le monde.
Je fais du c++ et comme j'ai un petit problème de pointeur, je viens vous embeter ^^.

Bon, pour résumer la situation : j'ai fait une classe en c++ qui permet de creer des matrices. J'ai d'abord commencer par en faire des de taille 4*4 (la classe s'appelant Matrice4) puis j'ai changé tous les "4" en N et j'ai utilisé un define. Ce passage c'est fait sans problème : je pouvais encore les multiplier, les déclarer ect.

Maintenant, je voudrais pouvoir finir cette partie de taille (si je puis dire ) et donc générer une matrice de taille N avec n entré par l'utilisateur.

L'ennui c'est que j'ai cherché comme faire un tableau de n*n élément à l'aide du malloc, mais que dans tous les cas, j'obtiens des dépassement mémoire, et mon programme plante.

Je voulais donc savoir si vous aviez une idée de comment faire en C++ pour pouvoir retoucher cette partie sans devoir reprendre tout le code (genre en passant pas les alias, vu que la taille de la matrice est déterminée à la création).

Je vous met l'"en-tête" de ma classe, si vous avez besoin d'info sur telle ou tele méthode, vous demandez

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
#ifndef DEF_MATRICE
#define DEF_MATRICE
#define N 5
 
class Matrice
{
  public:
 
    Matrice();
    Matrice(unsigned int taille);
    Matrice(unsigned int taille, std::string type); //sert à creer des matrice de type ide ou autre
    //Matrice(unsigned int nbLigne, unsigned int nbColonne);//dans le futur, crées des matrices non carrées
    ~Matrice();
 
    void setElt(unsigned int ligne, unsigned int colonne, int value);
    int getElt(unsigned int ligne, unsigned int colonne);
    void affiche();
 
    void displayError(std::string error);//centralisation des message d'erreur, pour un meilleur controle du comportement (tout désactiver , attendre l'appui d'une touche)
 
    bool T1(int ligne, int value);
    bool T2(int ligne1, int ligne2);
    bool T3(int ligne1, int ligne2, int value);
 
 
    Matrice operator+(const Matrice matrice);//addition de matrice
    Matrice operator*(const Matrice matrice);//multiplication de matrice
    Matrice operator*(int valeur);//multiplication par un scalaire
    Matrice operator/(int valeur);//division par un scalaire
 
 
  protected:
 
    bool initialise(unsigned int nb_ligne, unsigned int nb_colonne);//prévu pour réserver l'espace mémoire, ne marche pas
 
 
    int **m_elt;// avant : m_elt[N][N]
    int m_largElt;//sert pour l(affichage, pour aligner tous les nombres il faut connaitre celui qui prend le plus de caractères.
    int m_nbLigne;
    int m_nbColonne;
 
 
};
 
 
#endif