如何使用struct参数委托构造函数?

时间:2012-06-01 17:20:03

标签: c++ constructor c++11

我的问题是关于新的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?

1 个答案:

答案 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 ),
{
}

这可能是您的编译器/版本的问题。