Как идиоматически вызвать функции C++ на основе значения переменной?

Предположим, что у меня есть тип данных enum TreeTypes { TallTree, ShortTree, MediumTree }.

И я должен инициализировать некоторые данные на основе одного конкретного древовидного типа.

В настоящее время я писал этот код:

int initialize(enum TreeTypes tree_type) {
    if (tree_type == TallTree) {
        init_tall_tree();
    }
    else if (tree_type == ShortTree) {
        init_short_tree();
    }
    else if (tree_type == MediumTree) {
        init_medium_tree();
    }
    return OK;
}

Но это - некоторое глупое повторение кода. Я не использую ни одной из мощных возможностей C++ как шаблоны.

Как я мог написать этот код лучше?

Спасибо, Boda Cydo.

5
задан bodacydo 5 August 2010 в 20:01
поделиться