Passage de Paramètre par référence constructeur
Bonjour,
Lors de la construction d'un objet de type matrice je fait passer en paramètre une référence de matrice afin de construire une matrice à l'inverse(true->false et false-> true)
Voici un extrait du code
Code:
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
matrice::matrice(matrice& m1)
{
tab= new cases**[2];
for(int i=0;i<2;i++)
{
tab[i]=new cases*[2];
for (int j=0;j<2;j++)
{
if(m1.getinfo(i,j)) tab[i][j] = new cases(false); else tab[i][j]= new cases(false);
}
}
}
matrice::matrice()
{
tab= new cases**[2];
for(int i=0;i<2;i++)
{
tab[i]=new cases*[2];
for (int j=0;j<2;j++)
{
tab[i][j]=NULL;
}
}
if(flag==0)
{
srand((unsigned)(time(&flag)));//initialisation du random seulement pour la création de la première instance de matrice
flag++;
}
int j=1+(int) (6*rand()/(RAND_MAX+1.0));
switch (j)
{
case 1:
tab[0][0]=new cases(true);
tab[0][1]=new cases(true);
tab[1][0]=new cases(false);
tab[1][1]=new cases(false);
break;
case 2:
tab[0][0]=new cases(true);
tab[0][1]=new cases(false);
tab[1][0]=new cases(true);
tab[1][1]=new cases(false);
break;
case 3:
tab[0][0]=new cases(true);
tab[0][1]=new cases(false);
tab[1][0]=new cases(false);
tab[1][1]=new cases(true);
break;
case 4:
tab[0][0]=new cases(false);
tab[0][1]=new cases(true);
tab[1][0]=new cases(true);
tab[1][1]=new cases(false);
break;
case 5:
tab[0][0]=new cases(false);
tab[0][1]=new cases(true);
tab[1][0]=new cases(false);
tab[1][1]=new cases(true);
break;
case 6:
tab[0][0]=new cases(false);
tab[0][1]=new cases(false);
tab[1][0]=new cases(true);
tab[1][1]=new cases(true);
}
}
filtre::filtre(int n)
{
tab= new matrice**[128];
for(int i=0;i<128;i++)
{
tab[i]=new matrice*[128];
for (int j=0;j<128;j++)
{
if(i%2==0)
{
tab[i][j]= new matrice;
}
else
{
tab[i][j]= new matrice(tab[i-1][j]);
}
}
}
}
class cases
{
protected:
bool coul;
public:
cases();
cases(bool);
bool getinfo();
void setinfo(bool);
};
class matrice
{
protected:
static long flag;
cases ***tab;
int nb;
public:
matrice();
matrice(matrice&);
matrice toggle();
bool getinfo(int,int);
matrice& operator=(matrice&);
void write();
~matrice();
};
class filtre
{
protected:
matrice ***tab;
int nb;
public:
filtre(int);
void write();
void Create_Save_BMP();
}; |
Voici l'erreur que me retourne visual c++
Citation:
C:\Documents and Settings\mpastore\Desktop\c++\dithering\projet\projetDlg.cpp(476) : error C2664: '__thiscall matrice::matrice(class matrice &)' : cannot convert parameter 1 from 'class matrice *' to 'class matrice &'
Je pense que le problème viens de mon passage par référence mais comme je n'en ai utilisé j'ai du mal avec les références.
Merci de votre aide