c++ - 如何使用结构参数委托(delegate)构造函数?

标签 c++ constructor c++11

我的问题是关于新的 C++11 功能委派构造函数。所以我类有两个相似的 ctors,我想简化它们的实现。它们都将结构作为参数的问题,当我尝试委托(delegate)它们时,发生了编译器错误:

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?

最佳答案

除了明显的错误(你试图委托(delegate)给同一个构造函数)代码是正确的并且应该在 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 ),
{
}

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

关于c++ - 如何使用结构参数委托(delegate)构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10854731/

相关文章:

c++ - 在 C++ 中,构造函数和析构函数可以是内联函数吗?

c++ - 没有移动/复制构造函数的 std::unordered_map::emplace 行为

c++ - VC++资源文件和长字符串资源

c++ - 如何在 Linux 中捕获段错误?

c++ - 有效地初始化 const std::vector 类成员

c++11 - 一对不可复制不可移动类型和 emplace_back 的向量

c++ - auto_ptr 和 unique_ptr 有什么意义?

c++ - 数组大小推导

c++ - 字符串作为引用参数

java - 尝试使用获取缩放实例将图像添加到 JButton