17. marts 2003 - 09:55Der er
6 kommentarer og 1 løsning
Oprettelse af pure virtuel objekt og brug af dennes adresse
Jeg sidder med et problem. Min pure virtuelle class, ser således ud. klassen hedder MSdpAgentNotifier, og har funktionerne. virtual void AttributeRequestComplete(TSdpServRecordHandle aHandle, TInt aError) = 0;
Jeg laver en klasse der arver fra MSdpAgentNotifier, og derved skal jeg jo implimentere de tre funktioner. Dette er udført.
Jeg skal nu oprette et objekt af typen MSdpAgentNotifier, og dette kan jo ikke lade sig gøre. MSdpAgentNotifier skal oprettes fordi denne funktion skal bruge denne.
jeg kan godt se at dette er en adresse, men jeg kan jo ikke oprette et MSdpAgentNotifier objekt. Jeg opretter så en adresse til et MSdpAgentNotifier objekt.
MSdpAgentNotifier &rcvr Men dette virker jo heller ikke, der skal jo noget ind i dette objekt. Detter er det objekt der arver fra MSdpAgentNotifier, i mit til fælde hedder dette objekt test. test rcvr2;
Så er problemet så hvordan kan dette lade sig gøre at min funktion skal kunne modtage mit test objekt, men som et MSdpAgentNotifier & objekt.
MSdpAgentNotifier man = new MSdpAgentNotifierImpl(); kan ikke lade sig gøre. Kompiler: .\\Testbt.cpp:176: cannot declare variable `rcvr' to be of type `MSdpAgentNotifier' .\\Testbt.cpp:176: since the following virtual functions are abstract: .\\Testbt.cpp:176: void MSdpAgentNotifier::AttributeRequestComplete(TSdpServRecordHandle, TInt) .\\Testbt.cpp:176: void MSdpAgentNotifier::AttributeRequestResult(TSdpServRecordHandle, TSdpAttributeID, class CSdpAttrValue *) .\\Testbt.cpp:176: void MSdpAgentNotifier::NextRecordRequestComplete(TInt, TSdpServRecordHandle, TInt)
Man kan kun oprette MSdpAgentNotifier &man eller MSdpAgentNotifier *man Da denne er virtuel. Så skal man have fat i adressen, på denne pointer eller objekt adresse, og fylde arv objektet ind der. Ik????
jepper det var fordi funktionerne ikke var deklereret virtuelle i klassen der arver fra MSdpAgentNotifier . Tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.