2016-05-16 6 views
-1

ich die folgende Basisklasse habenWie benutzt man ein Mitglied in der dervied-Klasse, das im Konstruktor der Basisklasse zugeordnet ist?

Header-Datei

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 
}; 

Quelldatei:

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} 

Ich habe folgende abgeleitete Klasse:

Header-Datei:

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); 
}; 

Quelldatei:

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); 
} 

** Die params ich in der Konstrukteurs erhalten werden drom eine XML, die ich bekommen.

Aus irgendeinem Grund, den ich Fehler erhalten, der sagte: „Fehler:‚num_frames_to_count_in_ts_clk_est‘wurde im Rahmen nicht erklärt

+2

Also, wo ist diese Variable 'num_frames_to_count_in_ts_clk_est' erklärt? Ich sehe Parameter wie diesen, aber keine Variablen. – PaulMcKenzie

Antwort

2

Die Fehlermeldung ganz klar ist, gibt es keine variable num_frames_to_count_in_ts_clk_est

OK gibt. ist, aber es ist ein Parameter an den Konstruktor von layer_manager_t, so dass nur der Konstruktor von layer_manager_t diese Variable zugreifen können.

Sie würden einezu schaffen habenVariable mit dem Namen num_frames_to_count_in_ts_clk_est in layer_manager_t, und weisen Sie sie dann dem Konstruktor num_frames_to_count_in_ts_clk_est zu.

Hinweis: num_frames_to_count_in_ts_clk_est sollte protected sein, weil Sie den Zugriff darauf von der abgeleiteten Klasse haben wollen link_layer_manager_t

+0

Danke für die Erklärung. Ich wünschte, es wird mehr Leute wie dich geben und nicht wie @Captain Obvlious (wer Anfänger lacht.s ... schäm dich) –

+0

@sarar danke, aber du solltest wirklich mehr auf Fehler achten und versuchen, sie zu verstehen. Du wirst viel lernen :) – Rakete1111

+0

@ Rakete1111- Ich werde :) –

Verwandte Themen