дети
class Procfs : virtual public IO {
public:
int read() override {...}
}
class Criu : virtual public IO {
public:
int read() override {...}
}
Хочу сделать кеширующий IO, как должна выглядеть его имплементация?
1. Работающая
template<class __IO>
class IOCached {
public:
IOCached(__IO& parent) : parent(parent) { }
int read() { ... /* some logic */ ... cache = parent.read() ... }
private:
int cache = 0;
__IO parent;
}
2. Неработающая
class IOCached : virtual public IO {
public:
IOCached(__IO& parent) = default;
int read() { ... /* some logic */ ... cache = IO::read() ... } # <- compile-time error Undefined reference.
private:
int cache = 0;
}
Как неработающий метод сделать работающим?
Делай 1)
Обсуждают сегодня