我有以下基类
标头文件
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'未在范围内声明
答案 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