/ Forside/ Teknologi / Hardware / Pc'er / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Pc'er
#NavnPoint
Klaudi 48441
o.v.n. 40523
refi 29114
Fijala 19253
molokyle 16243
webnoob 14995
Brassovit.. 12463
peet49 11383
EXTERMINA.. 10755
10  severino 10622
NFS MW
Fra : spacemannn
Vist : 614 gange
200 point
Dato : 23-12-05 14:48

Har fået denne fejl 2 gange nu.

Microsoft Visual c ++ debug library
Program f:\NFS MW\speed.exe
R6025
-pure virtual function call

Er der nogle der har en løsning på dette.
Køre med 1.3

 
 
Kommentar
Fra : molokyle


Dato : 23-12-05 15:32

I C++ betyder et kald til en virtual funktion, at der ikke er instatieret et objekt af typen; class, men blot er refereret til en virtuel klasse (=FORBUDT). Det er via. en arvet klasse at funktionen skal få sin funktionalitet i metoderne (klasse funktionerne), da der jo kun er defineret et metodenavn på metoden (class funktionen) og denne er sat lig nul i en virtual class med det reservered ord: virtual ..og værdien er som sagt sagt = 0;

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/vcsmpclass.asp

Løsningen er; at man arver fra den virtuelle class og redefinerer funktionen/-erne der er sat = 0, med minimum en funktionskrop der returnerer en værdi (..som minimum typen : void).

WWW </MOLOKYLE>

Kommentar
Fra : molokyle


Dato : 23-12-05 15:36
Kommentar
Fra : molokyle


Dato : 23-12-05 15:39

Ps. Kig på 'abstract class' ( http://public.research.att.com/~bs/glossary.html ), 'pure virtual class' og 'pure virtual function ' i mit sidste link

WF </MOLOKYLE>

Kommentar
Fra : molokyle


Dato : 23-12-05 15:56

Altså :Hvis man kalder en pure virtual function? ..kalder man en funktion der endnu ikke er defineret

En pure virtuel funktion er en funktion hvis returværdi er sat =0;

Derfor skal funktionen nedarves og defineres.

Virtuelle funktioner derimod kan bruges, når man ikke kender returværdien i den class definition, hvori metoden (funktionen) indgår. Bl.a. for at kunne skelne funktioner med samme navn i forbindelse med multibel arv og ved brug af virtuelle class (klasser=definitioner), når et objekt oprettes på basis af en class definition.

Man kan f.eks. kalde en virtuel (defineret) funktion, hvis kun man kender referencen til base klassen vha. en fuld reference i aktuelle arvede class:

MIN_CLASS::MIN_FUNKTION();

..istedet for blot at referere : MIN_FUNKTION();

pure virtual functions derimod har ingen funktionskrop at kalde. Derfor får du fejlen

www </MOLOKYLE>

Kommentar
Fra : spacemannn


Dato : 23-12-05 16:05

Lyder nu meget pænt,men det bliver jeg ikke klogere af.
Lidt for nørdet. sorry



Kommentar
Fra : molokyle


Dato : 23-12-05 16:06

I forhold til; hvad I roder med (..hvis du også er sCover : http://www.kandu.dk/dk/spg/80069), så er der ikke meget at gøre!

Det er en klar programmeringsfejl

FF </MOLOKYLE>



Kommentar
Fra : molokyle


Dato : 23-12-05 22:00

Det korte og det lange er; at C++ ikke tillader at instantiere en ren virtuel klasse (pure virtual class) dvs. oprette et objekt af klassen eller kalde en ren virtuel funktion (pure virtual function) i en klasse, da det kun er klassenavnet eller funktionsnavnet der er defineret. Selve implementationen overlades til den klasse der nedarver egenskaberne (klasse/funktionsnavnet).

Ja, det er nørdet ...og ikke en 'fejl' du umiddelbart kan gøre noget ved, da den optræder i en *.exe fil.

Havde det været en fejl der blev fundet under compilering af kildekoden? ..kunne du have rettet i denne

WF </MOLOKYLE>

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407838
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste