如何使用在基类的构造函数中赋值的dervied类中的成员?

时间:2016-05-16 14:57:32

标签: c++ c++11

我有以下基类

标头文件

class layer_manager_t : public device_t
{
 private:
    layer_manager_t(    
                        int isok_duration_seconds_,
                        int error_recovery_duration_seconds_,
                        const string& alert_server_ipaddr_,

                        int num_frames_to_count_in_ts_clk_est
                        );
 public:
    layer_manager_t( xml::node_t& params ); // the parameter should be const
};

源文件:

layer_manager_t::layer_manager_t( 
                            int isok_duration_seconds_,
                            int error_recovery_duration_seconds_,
                            const string& alert_server_ipaddr_,
                            int num_frames_to_count_in_ts_clk_est)
{///some code}

我有以下派生类:

标题文件:

class link_layer_manager_t : public layer_manager_t
{
private:

public:

    link_layer_manager_t( xml::node_t& params ); 
    int                   calc_ts_clk_est_duration_seconds_link;
    virtual void calc_ts_clk_est_job_function(void);
};

源文件:

link_layer_manager_t::link_layer_manager_t( xml::node_t& params ) :
    layer_manager_t(params),
    frq_table_tag(""),
    calc_ts_clk_est_duration_seconds_link(str_to_int(params.get_decendant("ts_clk_est_timer_duration_seconds_link")->text))
{
////some code which contatin a job which call the clalc_job_function
}

void link_layer_manager_t::calc_job_function()
{
  double fraction = 310*(num_frames_to_count_in_ts_clk_est-   1);
}

**我在构造函数中得到的参数是一个xml,我得到了。

由于某种原因,我得到的错误是: “错误:'num_frames_to_count_in_ts_clk_est'未在范围内声明

1 个答案:

答案 0 :(得分:2)

错误信息非常清楚,没有变量num_frames_to_count_in_ts_clk_est

好的,有一个,但它是layer_manager_t的构造函数的参数,因此只有layer_manager_t构造函数才能访问该变量。

您必须在protected中创建一个名为num_frames_to_count_in_ts_clk_est的{​​{1}}变量,然后将其从构造函数中分配给layer_manager_t

注意:num_frames_to_count_in_ts_clk_est应为num_frames_to_count_in_ts_clk_est,因为您希望从派生类protected

访问它