Baruch Even <[EMAIL PROTECTED]> writes:
| On Fri, 20 Oct 2000, Lior Silberman wrote:
|
| > I know this _feels_ bad, but I think the most efficient implementation
| > will be to handle the temporary ourselves:
| >
| > Menu* Menu::expand (Buffer* buf)
| > {
| > Menu *resulting_menu = new Menu();
| > ...
| > // add stuff to the new menu
| > ...
| > return resulting_menu;
| > }
| >
| > Which can be used as:
| >
| > Menu *tmp = menu.expand();
| > ...
| > ...
| > delete tmp;
|
| At least if we go this way we should use auto_ptr<Menu> as in:
| {
| auto_ptr<Menu> tmp( menu.expand() );
| ...
| ...
| }
|
| This is also better since we reduce the risk of exceptions and/or returns
| before the delete.
If we want to do this exception safe we have to do something like:
build_men(Menu & m) {
Menu me;
...; // populate me
m.swap(me);
}
to avoid half populated objects, and objects in unknown state.
Lgb