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