У меня есть программа, написанная на C++, где пользователь может сегментировать некоторые ячейки с изображения микроскопии. Когда это будет сделано, программа получит три общих параметра для изменения. Этими тремя являются feature
, classifier
и reductionMethod
.Инициализировать разные шаблоны с тем же именем в C++
Каждый из этих параметров выполнен в виде шаблонов, которые равны в их инициализации. Я думал, что я мог бы сделать следующую реализацию назвать это:
if (feature == 1)
{
FastColorIntensityGradientFeature<8> workingFeature();
}
else if (feature == 2)
{
ColorIntensityGradientFeature<8> workingFeature();
}
workingFeature(input, var, var);
Но это невозможно, потому что workingFeature
инициализируется в if-else
заявлении. Как я могу это сделать? Я не привык к программированию на C++.
Неправильно на нескольких фронтах, в том числе ни один из тех, кто фактически объявляет объекты; они объявляют функции. И мне кажется, что вам нужен базовый виртуальный класс, который корни оба шаблона, если вы хотите продолжить это. – WhozCraig
Я удивлен, что это компилирует ... В любом случае вы можете отправить больше кода? – Keeler
Я нахожу ваш вопрос немного неясным, и я, возможно, неправильно понял его, но я думаю, что вам нужно [Boost Variant class] (http://www.boost.org/doc/libs/1_55_0/doc/html/variant. HTML). – jrok