Как реализовать общее сравнение? (для чисел и строк) - PullRequest
0 голосов
/ 09 ноября 2019

В поисках лучшего метода для реализации Class-метода, который использует общее сравнение.

У меня есть массив нуберов или массив строк, а затем я ищу в этом массиве либо конкретное число, либо конкретную строку (которая передается моей функции).

Проблемаis: Если у меня есть строки, мне нужно stringcompare, но stringcompare не работает, когда у меня целые или двойные числа.

Использовал бы шаблон, но я вроде как новичок в этой теме.

template <class data_Type> class Foo //data_Type can be int, double or string
{
public:
    Foo(data_Type field_x[])
    {this.field_x = field_x;}

    int get_index(data_Type xy_variable)
    {
        u = sizeof(field_x) / sizeof(field_x[0]);

        for (int i = 0; i < u; i++)
        {
            if (xy_variable == field_x[i])
            {
                return i;
            }
        }
    }
private:
    data_Type field_x[];
}

1 Ответ

0 голосов
/ 09 ноября 2019

Если у вас есть шаблонный класс, но вам нужно исключение для определенного типа, как вы делаете для строк, вы можете использовать специализацию.

добавить это вне вашего класса, в заголовке

template<>
int Foo<std::string>::get_index(std::string xy_variable);

И тогда вы можете написать отдельную реализацию, которая использует сравнение ваших любимых строк.

template<>
int Foo<std::string>::get_index(std::string xy_variable) { /*...*/ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...