c++ classes

  • Onderwerp starter Onderwerp starter viss
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

viss

Nieuwe gebruiker
Lid geworden
6 dec 2006
Berichten
1
Hallo,

Ik ben bezig met het leren van object georienteerd programmeren. Maar nu krijg ik een foutmelding die ik gewoon niet kan plaatsen wat ik nou fout doe.. Weet iemand het?

foutmelding: Could not find a match for 'Tijd::Tijd()'

alvast bedankt!

hieronder staat mijn code

unit1.cpp

//---------------------------------------------------------------------------
#include <iostream>
using namespace std;
#pragma hdrstop
#include "unit2.h"


using namespace std;
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
Tijd t1(13, 12, 15), t2(1, 2, 3), s1;
t1.print();
t2.print();
s1.som(t1, t2);
s1.print();

return 0;
}
//---------------------------------------------------------------------------


unit2.cpp

//---------------------------------------------------------------------------
#include<iostream>
using namespace std;

#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
Tijd::Tijd( int uren = 0, int minuten = 0, int seconden = 0 )
: uren( uren ), minuten( minuten ), seconden( seconden ){
}

void Tijd :: print() const {
cout << uren << ":" << minuten << ":" << seconden;
cin.get();
}

void Tijd :: som( onst Tijd& t1, const Tijd& t2 ){
uren = t1.uren + t2.uren;
minuten = t1.minuten + t2.minuten;
uren = minuten / 60;
seconden = t1.seconden + t2.seconden;
minuten = (minuten % 60) + (seconden);
seconden = seconden % 60;
}

unit2.h

//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#endif

class Tijd {
private:
int uren;
int minuten;
int seconden;
public:
Tijd( int uren, int minuten, int seconden );
void print() const;
void som( const Tijd& t1, const Tijd& t2 );
};
 
int main(int argc, char* argv[])
{
Tijd t1(13, 12, 15), t2(1, 2, 3), s1;
t1.print();

Je declareert hier 3 Tijd elementen. Voor t1 en t2 worden jouw constructor gebruikt:
#pragma package(smart_init)
Tijd::Tijd( int uren = 0, int minuten = 0, int seconden = 0 )
: uren( uren ), minuten( minuten ), seconden( seconden ){
}

Voor s1 kan deze niet gebruikt worden, omdat s1 geen argumenten heeft. Normaal maakt de compiler voor zulke elementen (zonder argumenten) een default-constructor aan, maar dat wordt niet gedaan als je zelf een constructor definieert.

Om dit op te lossen moet je zelf die constructor (zonder argumenten) definiëren:
Code:
Tijd::Tijd(){}
 
hij heeft wel degelijk een constructor zonder argumenten aangezien hij alle argumenten een default waarde heeft gegeven. alleen moet je volgens mij de default argumenten in de declaratie zetten en niet in de implementatie, ook moet je ervoor zorgen dat je eerst de class defineert en daarna pas de implementatie van de functies van die class. (kan niet zien of je dat goed doet omdat je post onoverzichtelijk is)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan