据我所知,C++没有自己的时间计算类,所以我们可以使用C库的功能。
因此,我决定创建一个C++包装类,它使用struct timespec并调用函数,它使用struct timespec。由于C++中的结构和类几乎相同,因此类可以继承结构。所以,我可以像这样继承struct timespec:
class Time: timespec {
public:
Time();
Time(int mseconds);
Time operator+(Time& t1);
friend std::ostream& operator<<(std::ostream& os, const Time &t);
};现在的问题是:在C中,我们这样做是为了得到当前的单调时间:
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC,&ts);在我的C++类中,我希望构造函数用当前时间初始化类。
Time::Time()
{
clock_gettime(CLOCK_MONOTONIC,this);
}使用this指针,就像struct timespec指针。
它编译正常,但是...
这个安全吗?它能保证,它应该工作吗?
继承类时,指向派生类的指针与指向基类的指针兼容。但是,该指针是否与传递给C函数的指向C结构的指针兼容?
发布于 2013-12-09 16:06:36
从构造函数传递this的特定示例是安全的,因为clock_gettime的形参类型是const struct timespec * (它转换指针,调整任何可能的偏移量)。
该标准对从构造函数传递this设置了一些限制。从本质上讲,它涉及到在构造完成之前对对象的回调。但你不能这么做。
但是,与其担心这个问题,为什么不直接使用数据成员而不是继承呢?
顺便说一句,请注意,与C++11一样,C++现在具有<chrono>标头,具有更高级别的时间实用程序。
https://stackoverflow.com/questions/20465583
复制相似问题