Toon posts:

C++ Een functie aanroepen buiten een klasse

Pagina: 1
Acties:
  • 57 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo :)

Ik ben gevraagd om een simpel programmaatje te schrijven voor de tennisclub. Nu heb ik nog nooit in C++ geprogrammeerd (wel in C) dus ik zal wel iets verkeerds denken.

Het gaat erom dat ik in C++ Builder een formulier heb gemaakt. Dit formulier is dus een klasse met de naam TForm1. In deze klasse staan een aantal functies die allemaal goed werken. 1 functie daarvan is bijvoorbeeld "WerkBij".

Nu zou ik graag de functie "WerkBij" willen aanroepen, alleen dan buiten de klasse TForm1. Daarvoor had ik het volgende gedacht:
====
TForm1 t;
t = new TForm1;
t.WerkBij(1);
====
Volgens de editor is dit juist (als ik t. invul krijg ik een lijstje met alle functies van TForm1), maar als ik wil gaan compilen krijg ik deze error:

"VCL style classes must be constructed using operator new"


Dus dan doe ik dit:
====
TForm1 t = new TForm1;
====
en dan krijg ik deze error:
"Could not find a match for TForm1()::TForm1()"


Wie zou mij hier mee willen helpen :) ?

  • Bart B
  • Registratie: Juli 2000
  • Laatst online: 06-04 17:55
Je constructor kan ook variabelen vragen. het moet daarom worden:

code:
1
2
3
TForm1 t;
t = new TForm1();
t.WerkBij(1);


probeer het eens.

b.t.w. ... dit is wel een ernstige noob vraag :) misschien eerst wat meer lezen voor je Object Oriented gaat programmeren. dan heb je er ook meer lol van

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Tja, dit is eigenlijk een beetje erg basic.

Zoals Bart B al zegt is een constructor eigenlijk een speciaal soort functie. Je moet dus ook haakjes gebruiken.
Als je ff de compiler - error had gelezen, geinterpreteerd en nagedacht, en eventueel de help er ff had bijgenomen, had je het zelf ook wel gezien.

Daarnaast zit de fout hem ook nog in wat anders. Misschien moet je nog maar eens de helpfiles bekijken. VCL objecten (Forms, Buttons, etc...) moeten op de heap gecreeërd worden. Dit gebeurt , zoals jij dus al doet met de new operator. Echter, je bent nog iets vergeten.....
Je kan pas een object 'newen' als het een pointer naar een object is.
Tip: pointers, dereference operator. (->)

[ Voor 41% gewijzigd door whoami op 22-06-2003 10:46 ]

https://fgheysels.github.io/


Dit topic is gesloten.