[C++ Builder] multi-dimensionaal-array probleem

Pagina: 1
Acties:

  • krietjur
  • Registratie: Februari 2001
  • Laatst online: 08:10

krietjur

Where am I?

Topicstarter
Ik ben bezig met een huiswerkopdracht en heb daarbij een probleem:

Ik heb een class Matrix met daarin deze constructor:
code:
1
2
3
4
5
6
7
Matrix::Matrix(int n){
    size=n;
    matrix=new (double*)[size];
    for(int i=0;i<size;++i){
        matrix[i]=new double[size+1];
    }
}

En het volgende stukje in de header file:
code:
1
double **matrix;

Deze code komt uit een class die is aangeleverd door de docent. Als ik compileer krijg ik de error:
[C++Error] matrix.cpp(12): Cannot convert 'double *' to 'double * *'.

Er zit dus nog kennelijk een foutje in de code van de docent, maar ik weet nu niet echt hoe ik deze fout moet oplossen. Heb al wat 'gespeeld' met pointer-dingetjes veranderen maar dat heeft de fout niet echt opgelost. Kreeg deze fout dan wel weg (bijv door matrix=new (double**)[size]; neer te zetten), maar zodra ik vanuit de main-class hetvolgende doe:
code:
1
Matrix *m = new Matrix(3);

Krijg ik de volgende linker-error:
[LinkerError] Unresolved external 'Matrix::~Matrix()' referenced from D:\DOCUMENTEN\PROGRAMMEREN\MATRIX\MAIN.OBJ.

Feitelijk zit ik dus te trial-and-error-en en dat werkt niet zo geweldig.. Kan het ivm de vakantie helaas niet aan de docent vragen, vandaar de vraag hier.. Iemand een hint, tip, suggestie hoe ik dit kan oplossen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

doe eens new double *[size] (zonder de haakjes dus) ;)

.edit: die linker error is waarschijnlijk omdat er in de header een destructor gedeclareert is, maar nergens geimplementeerd is

[ Voor 52% gewijzigd door .oisyn op 21-02-2003 15:05 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Ja hoor. Je moet die destructor implementeren:
C++:
1
2
3
4
5
6
Matrix::~Matrix()
{
for(int i = 0; i != size; i++)
  delete [] matrix[i];
delete [] matrix;
}

Professionele website nodig?


  • krietjur
  • Registratie: Februari 2001
  • Laatst online: 08:10

krietjur

Where am I?

Topicstarter
Pff :) Hartstikke bedankt voor de snelle reactie!! Het werkt nu.. in die hoek had ik het probleem totaal niet gezocht :)
* krietjur kan nu weer verder met de opdracht :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

NONDEJU! Wij hebben binnen 3 minuten al je problemen opgelost, en jij doet er in totaal ELF minuten over om te reageren!

BANNEN!!!!!!!!!!!!!!

Graag gedaan trouwens, succes verder ;)

[ Voor 1% gewijzigd door curry684 op 21-02-2003 15:16 . Reden: Oeps ]

Professionele website nodig?