funkcje czysto wirtualne - kompilator mnie nie kocha

0

OK, Listen up, chaps.

Mam następujący problem. Deklaruję sobie w jakiejś klasie-matce funkcję wirtualną (byle jaką, byle sobie poćwiczyć polimorfizm) no i odpowiednie funkcje w klasach-potomkach. I teraz pojawia się kłopot, albowiem kompilator (dev cpp) z jakiegoś powodu uparł się, że funkcja jest czysto wirtualna. A to z kolei powoduje, że wyskakuje masa bugów bo mam zadeklarowanych pełno bajerów które np. zwracają obiekt danej klasy czy biorą go za argument, a to oczywiście przy klasie abstrakcyjnej jest niemożliwe.
Proszę Was zatem o pomoc - czy ktoś byłby na tyle miły, aby luknąć na ten kod i powiedzieć dlaczego ta funkcja jest uznawana za czysto wirtualną?
// plik: vspace_class.h
virtual void write ();
/*********************/

//plik: vspace_class.cpp
#include <iostream>
#include "vspace_class.h"

/* funkcje, operatory i inne takie */

void vspace::write ()
{ //linijka 63
cout<<"wtf?";
}
/********************/

Kompilator mówi, że w vspace_class.cpp w linicje 63\cpp\me\vspace\vspace_class.cpp prototype for void vspace::write()' does not match any in class vspace'
No a potem pojawiają się błędy sugerujące że to jest funkcja czysto wirtualna, np.:
67 C:\cpp\me\vspace\vspace_class.cpp cannot declare parameter b' to be of type vspace'
67 C:\cpp\me\vspace\vspace_class.cpp because the following virtual functions are abstract:
16 C:\cpp\me\vspace\vspace_class.h virtual void vspace::write(vspace&)

Nie wiem czemu tak jest :P .
AFAIK to funkcje czysto wirtualne deklaruje sie tak:
virtual void write () = 0;
Z góry dizęki za pomoc.

0

Skoro metoda ma argument, to jeśli dostarczasz jej implementację, to powinieneś chyba dostarczyć ją z takimi samymi argumentami, jakie stoją w deklaracji... (vspace&) i (void) to jakby nie patrzeć dosyć różne listy argumentów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1