Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : surcharge de l'operateur = dans un classe tableau avec tempate, comment faire ? [ Archives / Au secours ] (tanguy_laverdure)

lundi 26 janvier 2004 à 11:24:42 | surcharge de l'operateur = dans un classe tableau avec tempate, comment faire ?

tanguy_laverdure

Bonjour, je voudrais surcharger l'operateur = pour affecter mon tableau comme donnee membre d'une autre classe

j'ai une classe cToto dans laquelle je cree un tableau
CDISTableau2D<double> dMonTableau2D;
// je le dimensionne
dMonTableau2D(2,3)

//j'y met des valeurs
dMonTableau2D(0,0) = 1.0;
dMonTableau2D(1,0) = 2.0;
dMonTableau2D(1,2) = 3.0;

// Maintenant je voudrais affecte ce tableau comme donne
//membre d'une autre classe
// CDISTableau2D<double> dDonneeMembreTableau2D;
// dDonneeMembreTableau2D(2,3)

je pensai faire dDonneeMembreTableau2D = dMonTableau2D
mais ca ne marche pas

je ne vois pas trop comment creer une surcharge de = pour ma classe avec template. Quelqu'un aurait il une idee ???

template <class T>
class CDISTableau2D
{
public:
CDISTableau2D();
CDISTableau2D(int iiNbElemI, int iiNbElemJ);
~CDISTableau2D();

T& operator() (int iiNbElemI, int iiNbElemJ);
T operator() (int iiNbElemI, int iiNbElemJ) const;

void AffecteNbElem(int iiNbElemI, int iiNbElemJ);
void DonneNbElem(int& ioiNbElemI, int& ioiNbElemJ);

void Initialise();

private:

bool _bInitialise;
T* _pValeur;
int _iNbElemI;
int _iNbElemJ;
};

// Constructeurs
template <class T> CDISTableau2D<T>::CDISTableau2D()
{
_iNbElemI = 0;
_iNbElemJ = 0;
_pValeur = 0;
_bInitialise = false;
}

template <class T> CDISTableau2D<T>::CDISTableau2D(int iiNbElemI, int iiNbElemJ)
{
if (iiNbElemI <= 0 || iiNbElemJ <= 0)
{
//throw BadIndex("Matrix constructor has 0 size");
cout << "bad index" << endl;
}
else
{
_iNbElemI = iiNbElemI;
_iNbElemJ = iiNbElemJ;
_pValeur = 0;
_bInitialise = false;

// Initialisation du tableau
Initialise();
}
}

// Destructeur
template <class T> CDISTableau2D<T>::~CDISTableau2D()
{
delete[] _pValeur;
}

// Affecte une taille au tableau
template <class T> void CDISTableau2D<T>::AffecteNbElem(int iiNbElemI, int iiNbElemJ)
{
_iNbElemI = iiNbElemI;
_iNbElemJ = iiNbElemJ;

// Initialisation du tableau
Initialise();
}

// Donne le nombre de lignes et de colones
template <class T> void CDISTableau2D<T>::DonneNbElem(int& ioiNbElemI, int& ioiNbElemJ)
{
ioiNbElemI = _iNbElemI;
ioiNbElemJ = _iNbElemJ;
}

// Initialisation du tableau
template <class T> void CDISTableau2D<T>::Initialise()
{
_pValeur = (new T[_iNbElemI * _iNbElemJ]);

if (_pValeur != NULL && _bInitialise == false)
{
for (int i = 0; i < _iNbElemI; i++)
{
for (int j = 0; j < _iNbElemJ; j++)
{
_pValeur[_iNbElemJ*i + j]=0;
}
}
_bInitialise = true;
}
}

// surchage de l'oerateur ()
template <class T> T& CDISTableau2D<T>::operator() (int iiNbElemI, int iiNbElemJ)
{
if (iiNbElemI >= _iNbElemI || iiNbElemJ >= _iNbElemJ)
//throw BadIndex("Matrix subscript out of bounds");
cout << "bad index" << endl;

return _pValeur[_iNbElemJ*iiNbElemI + iiNbElemJ];
}

// surchage de l'operateur ()
template <class T> T CDISTableau2D<T>::operator() (int iiNbElemI, int iiNbElemJ) const
{
if (iiNbElemI >= _iNbElemI || iiNbElemJ >= _iNbElemJ)
//throw BadIndex("const Matrix subscript out of bounds");
cout << "bad index" << endl;

return _pValeur[_iNbElemJ*iiNbElemI + iiNbElemJ];
}




Cette discussion est classé dans : int, tableau, cdistableau2d, iinbelemi, iinbelemj


Répondre à ce message

Sujets en rapport avec ce message

je comprend plus rien(pointeur) [ par bidules ] Bonjour,Pour moi on utilise les pointeur pour creer des tableau dynamiquement.or j'ai reussi a en declarer un avec une taille entrer a l'aide d'une va tableau char [ par dingue007 ] Voila je dois faire un prog en C++ : un tableau avec les mois de lannée et quand je tape un chiffre il me sort le mois ! mais je narrive pas a faire l tableau dynamique de structure en C ? [ par axl79 ] salutje voudrai faire un tableau dynamique de structures. voici ma structure: struct struct_arete { int sommet1; int sommet2; int quantite;} arete;com pb de sauvegarde de donnees dans un tableau sous excel [ par nazca ] Le Zero de la programmationNazcaBonjour!j'aimerais savoir comment on fait pour sauvegarder des donnees sous excel dans un tableau.et surtout comment d C ANSI allocation dynamique de tableau [ par pedu ] Ce petit pro beug en sortie, pourquoi et que faire ?#include #include int (*pi)[1][1]; /* pointeur sur un tableau d'entiers */void main(void){ unsi Tableau de structure [ par tomsawyerbelgique ] Bonjour suriez-vous me dire comment fait-on pour passer un tableau de structure dans une fonction:struct student { char nom[10]; int nbcot les class tjs le class... [ par JediMaster ] bon ben chuis enfin arriver a faire un tableau dans une classe et chuis tres content mais j'ai un autre pb je veux faire un tableau d'objet que j'init pb classe [ par JediMaster ] j'ai créé un tableau dynamique dans une classe comme ca:class MaClasse{public: int m_largeur; int m_hauteur; int** m_tableau; MaClasse(int lar,int hau Gestion d'entrées/sorties sur fichier [ par macrow ] Bonjour, Voici mon source : #include #include #include #include #include //******************************************** creer une fonction retournant un tableau [ par billcala ] j'essaie de créer une fonction qui doit initialiser un tableau d'entiers : le code que je fais est :int mafonction()[8];using namespace std;int mafonc


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,702 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.