In een applicatie wordt er vanuit verschillende modules informatie verzameld. Deze informatie bestaat uit een klasse. Elke module kan 0 of meerdere classes met informatie naar de 'core' aanleveren. Deze core slaat deze gegevens op in een 'module-wrapped' klasse - althans dat is de bedoeling.
Het modulaire gedeelte werkt allemaal prima, echter loop ik nu even vast op de volgende code:
Een mogelijkheid is om vector<DeviceBase*> devices; te gebruiken met alle memory-management gevolgen van dien. Is er nog een andere optie om een vector te onderhouden met abstracte klassen welke vervolgens gevuld wordt door implementaties?
Het modulaire gedeelte werkt allemaal prima, echter loop ik nu even vast op de volgende code:
C++:
De error die ontstaat is als volgt: cannot allocate an object of type `DeviceBase' because the following virtual functions are abstract: virtual void DeviceBase::update()1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| // abstracte klassen class ModuleBase { public: virtual vector<DeviceBase> detect() = 0; } class DeviceBase { public: virtual void update() = 0; } [..] // implementatie vector<DeviceBase> SampleModule::detect() { vector<DeviceBase> devices; SampleDevice *dev; dev = new SampleDevice(1); if (dev > 0) { devices.push_back(*dev); } // <-- error return devices; } class SampleDevice : public DeviceBase { public: SampleDevice(int); void update(); // etc } |
Een mogelijkheid is om vector<DeviceBase*> devices; te gebruiken met alle memory-management gevolgen van dien. Is er nog een andere optie om een vector te onderhouden met abstracte klassen welke vervolgens gevuld wordt door implementaties?
[ Voor 1% gewijzigd door LauPro op 17-09-2006 11:36 . Reden: Wat foutjes in de code. ]
Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!