Tabela em C++

Antes de mais boa noite a todos
Desculpem-me por passar já ao concreto mas nunca fui muito bom em apresentações..Eu tenho o seguinte programa até agora escrito:

ficheiro .h
Código:
class Tabela
{
private:
    double *elems;
    int num_elems;
...
public:
    Tabela() {num_elems=0; elems=NULL;}
    Tabela(int n);
    Tabela(Tabela & tab);
    ~Tabela() {delete[] elems;}
...
}
ficheiro.cpp
Código:
#include<stdio.h>
#include "Tabela.h"

Tabela::Tabela(int n)
{
    int i;
    num_elems = n;
    elems = new double[n];
    for(i=0;i<n;i++){elems[i] = 0;}
}

Tabela::Tabela(Tabela &tab)
{
    int i;
    num_elems = tab.num_elems;
    elems = new double[num_elems];
    for(i=0;i<num_elems;i++){elems[i]=tab.elems[i];}
}
...
void main()
{
    int op, n;
    double v;
    Tabela tab1(0);
...
switch(op)
        {
            case 1: printf("Quantos elementos terá a tabela?\n-> ");
                    scanf("%d", &n);
                    tab1.~Tabela();
                    Tabela tab1(n);
                    printf("\n\nSucesso!");
                    break;
            case 2: if(tab1.existe()==0) break; //a funçao existe() vê se o apontador elems e diferente de 0
                    printf("Que elemento deseja inserir?\n-> ");
                    scanf("%lf", &v);
                    printf("Em que posição? -> ");
                    scanf("%d", &n);
                    tab1.inserirElemento(n,v);
                    break;
...
           }
}
A minha duvida e um pouco complicada de explicar mas ca vai, espero que me entendam.. Eu apenas vou precisar de trabalhar com um elemento Tabela de cada vez.e eu sei que nao posso re-inicializar um elemento,muito menos dentro de um switch (penso eu..so um momento..yeap,da erro), como ali tenho na opçao 1 do switch portanto gostava que alguém me ajudasse, me desse alguma dica sobre como atribuir uma nova dimensao aquele elemento tab1 (eu inicializei-o a 0 pois para as outras opçoes do switch, como a 2, preciso de verificar se se esta a trabalhar com alguma tabela diferente de 0). Como podem ver eu ja tentei usar o destrutor e depois inicia-la de novo mas da-me sempre o erro de que a inicialização e ignorada por estar dentro de uma das opçoes do switch..se alguem tiver alguma ideia agradecia, seja usar o construtor Tabela(Tabela &tab) de alguma forma,seja o que for, eu ja estou sem ideias..

E quero tambem apenas dizer que fiquei muito surpreendido (pela positiva) por encontrar um forum desta natureza em portugues, util realmente.

-----Já não é preciso-----

PS. eu omiti a maior parte do programa pois apenas contém outras funçoes nao necessarias ah resoluçao desta duvida,penso eu
 
Última edição:
Back
Topo