Типы данных C ++ Float и String невозможно вставить в шаблон

Tarracon спросил: 07 октября 2018 в 11:33 в: c++

У меня ошибка в коде, которая говорит, что типы данных с плавающей запятой и строковые значения не являются правильными вызовами функций для моей функции шаблона. Функция шаблона работает для int и char, но не для float и string. Я посмотрел, есть ли ошибки в определениях функций, но я не смог их увидеть. Может кто-нибудь объяснить или предложить, в чем может быть проблема?

Search.h

#ifndef Search_hpp
#define Search_hpp
#include <iostream>
#include <stdio.h>
using namespace std;
class Search{
private:
public:
    template<typename ST>
    ST LinearSearch(ST numbers[], int listSize, ST key);
    template<typename ST>
    ST BinarySearch(ST numbers[], int listSize, ST key);
};#endif /* Search_hpp */

Search.cpp

#include "Search.h"
#include <iostream>
#include <string>
using namespace std;
template<typename ST>
ST Search::LinearSearch(ST numbers[], int listSize, ST key){
    int i;    for (i = 0; i < listSize; ++i) {
        if (numbers[i] == key) {
            return i;
        }
    }    return -1; /* not found */
}
template<typename ST>
ST Search::BinarySearch(ST numbers[], int listSize, ST key){
    int mid;
    int low;
    int high;    low = 0;
    high = listSize - 1;    while (high >= low) {
        mid = (high + low) / 2;
        if (numbers[mid] < key) {
            low = mid + 1;
        }
        else if (numbers[mid] > key) {
            high = mid - 1;
        }
        else {
            return mid;
        }
    }    return -1; // not found
} main.cpp
#include "Search.h"
#include <iostream>
#include <string>
using namespace std;int main() {
    int integerlist[] = {-1, 1, 5, 7, 8};
    float floatlist[] = {0.3338, 0.5, 2.5, 7.2, 9.6};
    string stringlist[] = {"anteater", "cat", "giraffe", "lion", "octopus"};
    char charlist[] = {'a', 'b', 'i', 'l', 'o' };
    const int size = 5;
    Search SearchClass;
    SearchClass.LinearSearch(integerlist, size, 12);
    SearchClass.BinarySearch(integerlist, size, 12);
    SearchClass.LinearSearch(floatlist, size, 6.543);
    SearchClass.BinarySearch(floatlist, size, 6.543);
    SearchClass.LinearSearch(stringlist, size, "lion");
    SearchClass.BinarySearch(stringlist, size, "lion");
    SearchClass.LinearSearch(charlist, size, 'o');
    SearchClass.BinarySearch(charlist, size, 'o');
};

0 ответов