by RinusMaximus » 01 Jun 2006, 11:21:44
Deze melding krijg je als je een call doet naar een virtuele functie. Dit is een functie die wel definieerd is, maar geen implementatie heeft.
Weet niet of je een beetje kan programmeren, maar voor de zekerheid een voorbeeldje:
Stel je definieert een auto. Dit is de basis voor alle auto's die je uiteindelijk gaat programmeren. Je weet dat alle auto's kunnen rijden, maar omdat elke auto anders rijdt kun je niet zeggen hoe. Dus je definieerd een virtuele functie rijden, waarmee je eigenlijk zegt dat de persoon die een bepaald soort auto gaat maken het rijden verder moet invullen.
Auto {
virtual function rijden();
}
Dus iemand maakt een Honda
Honda::Auto {
rijden() {
veelTeHard();
}
}
Of een eend
Eend::Auto {
rijden() {
teLangzaam();
}
}
Om een van de twee te laten rijden programmeer ik nu:
Eend->rijden();
Maar in het geval, waar jouw spel op onderuit gaat is de virtuele functie niet ingevuld:
MitsubishiLanceEVO_VIII::Auto {
}
Deze heeft dus geen eigen rijden functie, maar omdat de Mitsubishi wel een auto is en auto een virtuele functie genaamd rijden heeft kan ik wel het volgende programmeren:
MitsubishiLanceEVO_VIII->rijden();
En dan krijg je een Runtime error 'Pure Virtual Function Call' omdat je direct de Virtuele Functie aanroept en dat mag niet.
Terug naar Direct X.
Als het spel geprogrammeerd is tegen een versie van Direct X waarin een bepaalde Virtual Function wel is geimplementeerd en jij hebt nu een nieuwere (of oudere) versie van Direct X draaien waarin dit niet gebeurd is kun je hetzelfde probleem als hierboven krijgen.
Dit kan uiteraard ook aan een willekeurige andere library op je computer liggen, maar omdat je spel heel direct tegen Direct X aan draait geef ik je daar de meeste kans.
Goed, hoop dat je het nog snapt en er wat aan hebt.