0

我的问题是关于新的 C++11 特性委托构造函数。因此,我的班级中有两个相似的 ctor,我想简化它们的实现。它们都有结构作为参数的问题,当我尝试委托它们时,发生编译器错误:

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?

4

1 回答 1

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

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

于 2012-06-01T17:34:08.970 回答