Toon posts:

[C++] Functie gebruik bij overerving

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een classe Getal en daar staat een functie in: check_getal();. Deze heeft dus geen parameters nodig.
Nu heb ik een andere classe Getalsterkte die overerft van classe Getal met daarin een functie check_getal(int getal);. Deze heeft dus wel een paramater nodig.

Nu wil ik de functie van de hoofdklasse gebruiken maar geeft hij de melding dat ik te weinig argumenten heb meegegeven. Hoe kan ik dit oplossen? Ik include dus wel "Getal.h" voor de zekerheid (hoofdklasse header file).
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#pragma hdrstop
#include <iostream>
#include "Priemgetal.h"
#include "Getalsterkte.h"
#include "Getal.h"
using namespace std;
//---------------------------------------------------------------------------

void Priemgetal :: start() {
     Getalsterkte g;
     g.getal=0;
     if (g.check_getal()) {
          g.volgende_getal();
          g.vorige_getal();
          g.sterkte_getal();
          cin.get();
          cin.get();
     }
     else {
          cout << "Einde programma.";
          cin.get();
          cin.get();
     }
}

#pragma package(smart_init)

Verwijderd

kun je laten zien hoe je de klassen Getalsterkte en Getal gedeclareerd hebt?

Verwijderd

Topicstarter
Classe getal:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//---------------------------------------------------------------------------
#ifndef GetalH
#define GetalH
//---------------------------------------------------------------------------

class Getal {
public:
      int getal;
      bool check_getal();
      void volgende_getal();
      void vorige_getal();

};

//---------------------------------------------------------------------------
#endif

Classe Getalsterkste:
code:
1
2
3
4
5
6
7
8
9
10
//---------------------------------------------------------------------------
#ifndef GetalsterkteH
#define GetalsterkteH
#include "Getal.h"
//---------------------------------------------------------------------------
class Getalsterkte : public Getal {
public:
      void sterkte_getal();
      bool check_getal(int cijfer);
};

Verwijderd

Tja, het lijkt me handiger dat je functies, bedoeld voor overerving, iig virtual maakt. Daarnaast moet je die functies zo maken dat ze bij de afgeleide klassen niet tot problemen leiden, dus wat wil je bereiken met die functies?

Als je niets aan de functies mag veranderen, dan krijg je misschien dit soort dingen:
code:
1
2
3
4
Getal *g;
g = new Getalsterkte;
((Getalsterkte*)g)->check_getal(0); // de ene functie
g->check_getal(); // de andere functie

maar dit lijkt me niet de bedoeling.

Verwijderd

In Getalsterkte moet je even de regel:

using Getal::check_getal;

opnemen. Je compiler verbergt Getal:: check_getal om fouten met parameters te voorkomen. Door het woord using weet hij dat je die functie uit de baseclass wel gewoon wil gebruiken.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 23:11
Op zondag 16 december 2001 16:51 schreef cyberjoy het volgende:
ik heb een classe Getal en daar staat een functie in: check_getal();. Deze heeft dus geen parameters nodig.
Nu heb ik een andere classe Getalsterkte die overerft van classe Getal met daarin een functie check_getal(int getal);. Deze heeft dus wel een paramater nodig.

Nu wil ik de functie van de hoofdklasse gebruiken maar geeft hij de melding dat ik te weinig argumenten heb meegegeven. Hoe kan ik dit oplossen?
Functie call kwalificeren.

Dus ->Getal::check_getal() ipv ->check_getal()

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
Dit werkt inderdaad. Bedankt.
Pagina: 1