【发布时间】:2016-05-24 08:20:15
【问题描述】:
下面是我要实现的纯虚拟接口类:
#include <time.h>
class SharedMemoryInterface
{
public:
virtual ~SharedMemoryInterface() {}
virtual int sem_timedwait(sem_t* sem, const struct timepsec* abs_timeout) = 0;
};
下面是实现:
class SharedMemoryImpl : public SharedMemoryInterface
{
public:
virtual int sem_timedwait(sem_t* sem, const struct timespec* abs_timeout) { return ::sem_timedwait(sem, abs_timeout); }
};
我得到编译器错误:
SharedMemoryImpl.h:25:7: note: because the following virtual functions are pure within "SharedMemoryImpl":
class SharedMemoryImpl : public SharedMemoryInterface
SharedMemoryInterface.h:27:17: note: virtual int SharedMemoryInterface::sem_timedwait(sem_t*, const timepsec*)
virtual int sem_timedwait(sem_t* sem, const struct timepsec* abs_timeout) = 0;
唯一的区别似乎在 timespec 参数中,它删除了结构并且原型不再匹配,为什么要这样做?
【问题讨论】:
-
请注意
timepsec与timespec。修正你的错字。 -
为什么在实现中需要额外的
}? -
该死,就这样,该回家了
标签: c++ inheritance virtual pure-virtual