c ++使用静态内存实现一个类到动态内存

时间:2013-03-18 15:44:57

标签: c++ class constructor destructor

所以我有一个名为LlistaEquips的类,它有一个名为equip的另一个类的表。 我把它放在静态内存上,但我现在需要用动态内存来做。这是我的LlistaEquips.h我必须实现析构函数和构造函数来制作对象的副本。

#ifndef LLISTAEQUIPS_H
#define LLISTAEQUIPS_H
#include "equip.h"

class LlistaEquips {
    public:

        // constructors
        LlistaEquips();
        //Pre: --; Post: Posa LlistaEquips per defecte.
        LlistaEquips(int nEquips);
        //Pre: Dades dels equip entrats correctament. Post: Inicialitza ListaEquips amb els Equips que li hem passat.
        LlistaEquips(const equip & elem);

        // consultors
        int posVect(equip a) const;
        //Pre: equip a introduir correctament. Post: Retorna la posicio en que s'ha d'inserir el seguent equip. Si l'equip ja es al vector retorna -1
        int Quants() const;
        //Pre: Nombre d'equips correcte. Post: Retorna el nombre d'equips que hi ha a la taula.
        equip Llista(int i) const;
        //Pre: Posicio 'i' de la llista ocupada. Post: Retorna l'equip a la posicio 'i' de la llista.
        bool Existeix(equip a, int i) const;
        //Pre: equip 'a' correcte i vector amb equips. Post: Retorna 'true' si el nom de l'equip 'a' ja es al vector.
        void imprimir() const;
        //Pre: Taula d'equips correcte. Post: Imprimeix per pantalla la taula d'equips.

        // modificadors
        void apuntarResultat(Partit a);
        //Pre: Partit llegit correctament. Post: Apunta el resultat del partit a la taula d'equips. Amb el nom, punts i gols a favor i en contra.
        void incerirVect (equip a, int pos);
        //Pre: Equip introduit correctament, pos>=0. Post: Introdueix l'equip 'a' a la posicio 'pos' de la taula.
        void ordenar(char a);
        //Pre: Taula d'equips plena. 'a' introduit correctament. Post: Taula ordenada segons el criteri definit per 'a'.

    private:
        static const int MAX_EQUIPS=100;
        equip *a_t;
        a_t = new equip[MAX_EQUIPS];
        int a_n;
};

#endif // LLISTAEQUIPS_H

这是我的equip.h:

#ifndef EQUIP_H
#define EQUIP_H
#include <iostream>
using namespace std;

class equip {
    public:

        // constructors
        equip();
        //Pre: --. Post: Posa equip per defecte.
        equip(string n, int gf, int gc, int pts);
        //Pre: Atributs de equip entrats correctament. Post: Inicialitza equip amb els atributs entrats
        equip(const equip & elem);
        // constructor de copia.

        // consultors
        string NomEquip() const;
        //Pre: Nom de l'equip correcte. Post: Retorna el nom de l'equip.
        int Golsf() const;
        //Pre: Gols a favor de l'equip correctes. Post: Retorna els gols a favor de l'equip.
        int Golsc() const;
        //Pre: Gols en contra de l'equip correctes. Post: Retorna els gols en contra de l'equip.
        int Punts() const;
        //Pre: Punts de l'equip correctes. Post: Retorna els punts de l'equip.
        bool esMenor(equip a, char b) const;
        //Pre: Dos equip per poder-los comparar. Post: Retorna 'true' si el primer es menor segons el metode indicat per 'b' sino retorna 'false'.

        // modificadors
        void SumaNouEquip(int a, int b);
        //Pre: Equip no existent a la llista. Post: Suma 'a' a gols a favor, 'b' a gols en contra si q==l, si q==v suma 'a' a gols en contra, 'b' a gols a favor
        void SumaGP(int a, int b, bool q);
        //Pre: Gols del partit llegits correctament. Post: Suma 'a' a gols a favor, 'b' a gols en contra si q=1, si q=0 suma 'a' a gols en contra, 'b' a gols a favor
        void SumaGPVis(int a, int b);
        //Pre: Gols del partit llegits correctament. Post: Suma 'a' a gols en contra, 'b' a gols a favor, suma 3 punts si a>b o 1 si a=b.
        void Apuntar(string n, int a, int b);
        //Pre: Partit llegit correctament. Post: Agafa les dades llegides des del partit i les passa a l'equip.


    private:
        string a_nom;
        int a_golsf;
        int a_golsc;
        int a_punts;
};

#endif // EQUIP_H

我有点迷失,因为我不知道如何实现构成该对象副本的构造函数。我该怎么做?

0 个答案:

没有答案