В C++ существует ли способ иметь что-то вроде временной переменной в списке инициализации. Я хочу инициализировать два постоянных члена с одним и тем же экземпляром чего-либо, не передавая это что-то, удалить требование const, использовать Factory (то есть передать его, но фабрика сгенерировать его, чтобы скрыть его от пользователя API), или иметь temp на самом деле быть переменной-членом.Временные переменные C++ в списке инициализации
I.e. что-то вроде
Class Baz{
const Foo f;
const Bar b;
Baz(Paramaters p):temp(p),f(p,temp),b(p,temp){ //temp is an instance of Something
// But NOT A member of Baz
// Whatever
}
}
вместо
Class Baz{
Foo f;
Bar b;
Baz(Paramaters p){
Something temp(p);
f = Foo(p,temp)
b = Bar(p,temp)
}
}
или
Class Baz{
Foo f;
Bar b;
Baz(Paramaters p,Something s):f(p,s),b(p,s){
}
}
Ниццу. К сожалению, я не думаю, что хочу, чтобы это зависело от C++ 11, просто избегайте этой проблемы. Его библиотека, и я бы предположил, что некоторые люди могут возражать против ее интеграции, если они должны были начать использовать C++ 11 – imichaelmiers
@imichaelmiers: Я вижу. У вас есть контроль над определением 'Something',' Foo' и 'Baz'? Например, вы могли бы добавить функцию-член в 'Foo', которая возвращает объект' Something', с которым он был построен? (чтобы вы могли использовать его при инициализации 'b' как' b (p, f.get_something()) ' –