C ++ ссылка в конструкторе базового класса - PullRequest
2 голосов
/ 03 октября 2010

У меня есть логика в конструкторе базового класса.Результат логики должен быть записан в конструкторе производного класса во временной переменной.Есть ли способ сделать это?

Например

class Base
{
   Base() { int temp_value = some_logic;  } 
};

class Derived : public Base
{
    Derived() { // need the temp value here.. }
};

Спасибо, Гокул.

Ответы [ 3 ]

2 голосов
/ 03 октября 2010

Либо:

class Base 
{ 
   protected int not_so_temp_value;
   Base() { not_so_temp_value = some_logic_result;  }  
}; 

class Derived : public Base 
{ 
    Derived() { // read the not_so_temp_value member here.. } 
};

Или:

class Base 
{ 
   Base(int some_logic_result) { int temp_value = some_logic;  }  
}; 

class Derived : public Base 
{ 
    static Derived* create()
    {
       int some_logic_result = some_logic;
       return new Derived(some_logic_result);
    }
    Derived(int some_logic_result) : Base(some_logic_result)
    { // use the some_logic_result here.. } 
}; 
2 голосов
/ 03 октября 2010

Я думаю, что самый простой способ, которым я могу придумать, это просто разделить some_logic на его собственный метод ...

class Base
{
    Base() { int temp_value = initializationLogic();  }
    int initializationLogic(){ return some-logic;}
};

class Derived : public Base
{
    Derived() { int temp_value_here_too = initializationLogic(); }
};
0 голосов
/ 03 октября 2010

Это то, что я планирую использовать

class Base 
{ 
   Base(int& some_logic_result) { some_logic_result = some_logic;  }  
}; 

class Derived : public Base 
{ 
    Derived(int some_logic_result = 0) : Base(some_logic_result)
    { // use the some_logic_result here.. } 
}; 

Спасибо, Гокул.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...