Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 警告:派生类';s成员变量在基类之后初始化_C++_Boost Function - Fatal编程技术网

C++ 警告:派生类';s成员变量在基类之后初始化

C++ 警告:派生类';s成员变量在基类之后初始化,c++,boost-function,C++,Boost Function,问题的题目简单明了。代码如下: class xxx : public Scheduled { long int _wait_time; boost::function< void() > _cb; mutable boost::mutex _mutex; public: xxx(boost::function< void() > callback, unsigned int wait_time = 10000000) :_wait

问题的题目简单明了。代码如下:

class xxx : public Scheduled
{
    long int _wait_time;
    boost::function< void() > _cb;
    mutable boost::mutex _mutex;

public:
    xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
    :_wait_time(wait_time),_cb(callback)
    ,Scheduled(Timer(_wait_time, 0))
    {
        this->stop();
    }
};
xxx类:公共计划
{
长时间等待;
boost::函数\u cb;
可变增强::互斥体_互斥体;
公众:
xxx(boost::function回调,unsigned int wait_time=10000000)
:_wait_time(等待时间),_cb(回调)
,已计划(计时器(_wait_time,0))
{
此->停止();
}
};
尽管我尊重初始化的顺序,但我得到的警告如下:

---: In constructor ‘xxx::xxx(boost::function<void ()()>, unsigned int)’:
---: warning: ‘xxx::_cb’ will be initialized after
---: warning:   base ‘Scheduled’
---: warning:   when initialized here
--:在构造函数“xxx::xxx(boost::function,unsigned int)”中:
---:警告:“xxx::\u cb”将在
---:警告:基本“已计划”
---:警告:在此处初始化时

有什么想法吗?谢谢

基类构造函数必须是初始化列表中的第一个构造函数:

xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
:Scheduled(Timer(_wait_time, 0))
,_wait_time(wait_time),
,_cb(callback)
{
    this->stop();
}
xxx(boost::function回调,unsigned int wait_time=10000000)
:已计划(计时器(_wait_time,0))
,_wait_time(等待时间),
,_cb(回调)
{
此->停止();
}

基类构造函数必须是初始化列表中的第一个构造函数:

xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
:Scheduled(Timer(_wait_time, 0))
,_wait_time(wait_time),
,_cb(callback)
{
    this->stop();
}
xxx(boost::function回调,unsigned int wait_time=10000000)
:已计划(计时器(_wait_time,0))
,_wait_time(等待时间),
,_cb(回调)
{
此->停止();
}

基类构造函数必须是初始化列表中的第一个构造函数:

xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
:Scheduled(Timer(_wait_time, 0))
,_wait_time(wait_time),
,_cb(callback)
{
    this->stop();
}
xxx(boost::function回调,unsigned int wait_time=10000000)
:已计划(计时器(_wait_time,0))
,_wait_time(等待时间),
,_cb(回调)
{
此->停止();
}

基类构造函数必须是初始化列表中的第一个构造函数:

xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
:Scheduled(Timer(_wait_time, 0))
,_wait_time(wait_time),
,_cb(callback)
{
    this->stop();
}
xxx(boost::function回调,unsigned int wait_time=10000000)
:已计划(计时器(_wait_time,0))
,_wait_time(等待时间),
,_cb(回调)
{
此->停止();
}

在构造基类之前,您正在初始化派生类成员

xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
:_wait_time(wait_time),_cb(callback) <- derived class memebers
,Scheduled(Timer(_wait_time, 0)) <- Base class
{
    this->stop();
}
xxx(boost::function回调,unsigned int wait_time=10000000)
:_wait_time(wait_time),_cb(回调)回调,unsigned int wait_time=10000000)
:已计划(计时器(等待时间,0))
^使用等待时间而不是等待时间
,_wait_time(等待时间),
,_cb(回调)
{
此->停止();
}

您不应再收到警告。

在构造基类之前,您正在初始化派生类成员

xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
:_wait_time(wait_time),_cb(callback) <- derived class memebers
,Scheduled(Timer(_wait_time, 0)) <- Base class
{
    this->stop();
}
xxx(boost::function回调,unsigned int wait_time=10000000)
:_wait_time(wait_time),_cb(回调)回调,unsigned int wait_time=10000000)
:已计划(计时器(等待时间,0))
^使用等待时间而不是等待时间
,_wait_time(等待时间),
,_cb(回调)
{
此->停止();
}

您不应再收到警告。

在构造基类之前,您正在初始化派生类成员

xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
:_wait_time(wait_time),_cb(callback) <- derived class memebers
,Scheduled(Timer(_wait_time, 0)) <- Base class
{
    this->stop();
}
xxx(boost::function回调,unsigned int wait_time=10000000)
:_wait_time(wait_time),_cb(回调)回调,unsigned int wait_time=10000000)
:已计划(计时器(等待时间,0))
^使用等待时间而不是等待时间
,_wait_time(等待时间),
,_cb(回调)
{
此->停止();
}

您不应再收到警告。

在构造基类之前,您正在初始化派生类成员

xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
:_wait_time(wait_time),_cb(callback) <- derived class memebers
,Scheduled(Timer(_wait_time, 0)) <- Base class
{
    this->stop();
}
xxx(boost::function回调,unsigned int wait_time=10000000)
:_wait_time(wait_time),_cb(回调)回调,unsigned int wait_time=10000000)
:已计划(计时器(等待时间,0))
^使用等待时间而不是等待时间
,_wait_time(等待时间),
,_cb(回调)
{
此->停止();
}

您不应该再收到警告。

添加到其他答案中:
如果初始值设定项的顺序与它们在类中出现的顺序不同,则会出现此警告的另一个原因

例如:

struct A { .. };
struct B { .. };
struct C
{
    A a;
    B b;
    C(..) : a(..), b(..) {}  // OK
    C(..) : b(..), a(..) {}  // Wreorder-warning
};

添加到其他答案:
如果初始值设定项的顺序与它们在类中出现的顺序不同,则会出现此警告的另一个原因

例如:

struct A { .. };
struct B { .. };
struct C
{
    A a;
    B b;
    C(..) : a(..), b(..) {}  // OK
    C(..) : b(..), a(..) {}  // Wreorder-warning
};

添加到其他答案:
如果初始值设定项的顺序与它们在类中出现的顺序不同,则会出现此警告的另一个原因

例如:

struct A { .. };
struct B { .. };
struct C
{
    A a;
    B b;
    C(..) : a(..), b(..) {}  // OK
    C(..) : b(..), a(..) {}  // Wreorder-warning
};

添加到其他答案:
如果初始值设定项的顺序与它们在类中出现的顺序不同,则会出现此警告的另一个原因

例如:

struct A { .. };
struct B { .. };
struct C
{
    A a;
    B b;
    C(..) : a(..), b(..) {}  // OK
    C(..) : b(..), a(..) {}  // Wreorder-warning
};

谢谢,但是如果基类初始化依赖于派生成员呢?例如,您更正了我的等待时间。如果
\u wait\u time
是一个在提供给base之前必须初始化的类,该怎么办?@rahman,那么您的设计就被破坏了。基类必须在类的任何非静态成员之前初始化。在初始化基类之前,没有一个派生类成员被初始化,因此您将使用垃圾值。谢谢,但是如果基类初始化依赖于派生成员呢?例如,您更正了我的等待时间。如果
\u wait\u time
是一个在提供给base之前必须初始化的类,该怎么办?@rahman,那么您的设计就被破坏了。基类必须在类的任何非静态成员之前初始化。在初始化基类之前,没有一个派生类成员被初始化,因此您将使用垃圾值。谢谢,但是如果基类初始化依赖于派生成员呢?例如,您更正了我的等待时间。如果
\u wait\u time
是一个在提供给base之前必须初始化的类,该怎么办?@rahman,那么您的设计就被破坏了。基类必须在类的任何非静态成员之前初始化。在初始化基类之前,没有一个派生类成员被初始化,因此您将使用垃圾值。谢谢,但是如果基类初始化依赖于派生成员呢?比如你纠正了我的错误