C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

cannot convert from 'const double [4][4]' to 'MatriX '

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
korchkidu
Guest





PostPosted: Thu Nov 04, 2004 6:46 pm    Post subject: cannot convert from 'const double [4][4]' to 'MatriX ' Reply with quote



Bonjour,

je ne comprends pas pourquoi le programme suivant me sort une erreur:

#include <stdio.h>
#include <vector>

typedef double MatriX[4][4];

int main(void)
{
std::vector<MatriX> test;

MatriX matrix;

test.push_back(matrix);

return 0;
}

VC++ .NET: error C2440: 'initializing' : cannot convert from 'const
double [4][4]' to 'MatriX '

Pourquoi il me sors un const double [4][4]?

K.
Back to top
Horst Kraemer
Guest





PostPosted: Thu Nov 04, 2004 7:51 pm    Post subject: Re: cannot convert from 'const double [4][4]' to 'MatriX ' Reply with quote



korchkidu <korch_ki_du (AT) yahoo (DOT) fr> wrote:

Quote:
Bonjour,

je ne comprends pas pourquoi le programme suivant me sort une erreur:

#include <stdio.h
#include
typedef double MatriX[4][4];

int main(void)
{
std::vector
MatriX matrix;

test.push_back(matrix);

return 0;
}

VC++ .NET: error C2440: 'initializing' : cannot convert from 'const
double [4][4]' to 'MatriX '

Pourquoi il me sors un const double [4][4]?

On ne peut pas utiliser des tableaux comme élément de vector parce que
les tableaux sont des types sans opérateur de copie.

--
Horst



--
Lâche pas la patate!

Back to top
Korchkidu
Guest





PostPosted: Thu Nov 04, 2004 8:19 pm    Post subject: Re: cannot convert from 'const double [4][4]' to 'MatriX ' Reply with quote



Horst Kraemer wrote:

Quote:
On ne peut pas utiliser des tableaux comme élément de vector parce que
les tableaux sont des types sans opérateur de copie.

Je vois. Mais imaginons que ce typedef fait parti d'une lib en C qui est
assez grande. Comment je peux faire si je veux faire ce genre de truc?
Suis-je oblige de declarer une classe qui englobe mais structure de
donnees de base?

K.

Back to top
Falk Tannhäuser
Guest





PostPosted: Fri Nov 05, 2004 9:27 am    Post subject: Re: cannot convert from 'const double [4][4]' to 'MatriX ' Reply with quote

Korchkidu wrote:
Quote:
Horst Kraemer wrote:
On ne peut pas utiliser des tableaux comme élément de vector parceque
les tableaux sont des types sans opérateur de copie.

Je vois. Mais imaginons que ce typedef fait parti d'une lib en C qui est
assez grande. Comment je peux faire si je veux faire ce genre de truc?
Suis-je oblige de declarer une classe qui englobe mais structure de
donnees de base?

struct MatriX
{
double a[4][4];
};

devrait faire l'affaire. Une classe avec l'opérateur [] surchargé
rend cependant l'utilisation plus aisée :

class MatriX
{
double a[4][4];
public:
double* operator[](unsigned i) { return a[i]; }
double const* operator[](unsigned i) const { return a[i]; }
};

Falk

Back to top
Twxs
Guest





PostPosted: Fri Nov 05, 2004 9:28 am    Post subject: Re: cannot convert from 'const double [4][4]' to 'MatriX ' Reply with quote


Quote:

Je vois. Mais imaginons que ce typedef fait parti d'une lib en C qui est
assez grande. Comment je peux faire si je veux faire ce genre de truc?
Suis-je oblige de declarer une classe qui englobe mais structure de
donnees de base?

K.

ou faire un vector de pointeur vers cette structure

Back to top
korchkidu
Guest





PostPosted: Fri Nov 05, 2004 10:15 am    Post subject: Re: cannot convert from 'const double [4][4]' to 'MatriX ' Reply with quote

Falk Tannhäuser wrote:
Quote:
Korchkidu wrote:

class MatriX
{
double a[4][4];
public:
double* operator[](unsigned i) { return a[i]; }
double const* operator[](unsigned i) const { return a[i]; }
};

Je croyais interieurement a une methode miracle. Je suis bon pour faire
des wrappers pour chaque type qui pose pb (tant qu'a faire, autant faire
les operateurs qui vont bien aussi....).

Merci bcp pour les reponses,
K.

Back to top
Falk Tannhäuser
Guest





PostPosted: Fri Nov 05, 2004 10:35 am    Post subject: Re: cannot convert from 'const double [4][4]' to 'MatriX ' Reply with quote

korchkidu wrote:
Quote:
Falk Tannhäuser wrote:

class MatriX
{
double a[4][4];
public:
double* operator[](unsigned i) { return a[i]; }
double const* operator[](unsigned i) const { return a[i]; }
};

Je croyais interieurement a une methode miracle. Je suis bon pour faire
des wrappers pour chaque type qui pose pb (tant qu'a faire, autant faire
les operateurs qui vont bien aussi....).

Si tu as beaucoup de matrices avec des types ou dimensions différent(e)s,
pourquoi pas faire un template :

template<typename T, unsigned Rows, unsigned Columns = Rows>
class MatriX
{
T data[Rows][Columns];
public:
// Constructeur(s), si nécessaire ?

T* operator[](unsigned i) { return data[i]; }
T const* operator[](unsigned i) const { return data[i]; }
};

...
MatriX<double, 4> m1;
MatriX<int, 3, 7> m2;


Falk

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.