我的问题是关于新的C ++ 11功能委托构造函数。所以我班上有两个类似的ctors,我想简化他们的实现。他们都将结构作为参数的问题,当我试图委托它们时,发生编译器错误:
error: type ‘MyClass’ is not a direct base of ‘MyClass’
所以现在就是:
MyClass::MyClass ( const timeval & TV ) :
Seconds ( TV.tv_sec),
USeconds ( TV.tv_usec ),
{
}
MyClass::MyClass ( const timespec & TS ) :
Seconds ( TS.tv_sec),
USeconds ( TS.tv_nsec * 1000 ),
{
}
后:
MyClass::MyClass ( const timeval & TV ) :
MyClass ( timeval { TV.tv_sec, TV.tv_usec/1000 } )
{
}
MyClass::MyClass ( const timespec & TS ) :
Seconds ( TS.tv_sec),
USeconds ( TS.tv_nsec * 1000 ),
{
}
有人知道我怎样才能正确地从第一个ctor拨打第二个ctor?
答案 0 :(得分:1)
除了明显的错误(你试图委托给同一个构造函数)代码是正确的,应该适用于g ++ 4.7
MyClass::MyClass ( const timeval & TV ) :
MyClass ( timespec { TV.tv_sec, TV.tv_usec/1000 } )
{
}
MyClass::MyClass ( const timespec & TS ) :
Seconds ( TS.tv_sec),
USeconds ( TS.tv_nsec * 1000 ),
{
}
这可能是您的编译器/版本的问题。