c++ - Ошибка: бинарный ">>": не найден оператор, принимающий правый операнд типа "T" (или приемлемое преобразование отсутствует)


1

Подскажите, пожалуйста в чем ошибка:

#include <iostream>
#include <vector>
using namespace std;

template <typename T>
void fillArray(vector<T> &arr)
{
    T el;
    int size;
    cout << "Enter the number of elements: ";
    cin >> size;
    for (int i = 0; i < size; i++)
    {
        cin >> el;
        arr.push_back(el);
    }
}

template <typename T>
void printArray(vector<T> arr)
{
    for (int i = 0; i < arr.size(); i++)
    {
        cout << arr[i] << " | ";
    }
    cout << endl;
}

template <typename T> 
void removeEverySecond(vector<T> &arr)
{
    for (int i = 0; i < arr.size(); i++) {
        if (i % 2 == 1)
        {
            arr.erase(arr.begin() + i);
        }
    }
}

int main()
{
    vector<int> intVector;
    vector<string> stringVector;
    vector<float> floatVector;

    cout << "Filling intVector: " << endl << endl;
    fillArray(intVector);
    cout << "Filling stringVector: " << endl << endl;
    fillArray(stringVector);
    cout << "Filling floatVector: " << endl << endl;
    fillArray(floatVector);

    cout << "Printing intVector: " << endl << endl;
    printArray(intVector);
    cout << "Printing stringVector: " << endl << endl;
    printArray(stringVector);
    cout << "Printing floatVector: " << endl << endl;
    printArray(floatVector);

    cout << endl << "Removing..." << endl;

    removeEverySecond(intVector);
    removeEverySecond(stringVector);
    removeEverySecond(floatVector);

    system("pause");
    return 0;
}

Получаю ошибку: бинарный ">>": не найден оператор, принимающий правый операнд типа "T" (или приемлемое преобразование отсутствует). Заранее благодарен за помощь.

Источник
  •  92
  •  1
  • 3 янв 2018 2018-01-03 15:53:09

1 ответ

2

Старайтесь приводить полное сообщение об ошибке. В дополнение к тому, что вы процитировали, компилятор вам также сказал, что ошибка возникает именно для T == std::string.

Ошибка возникает потому, что вы забыли сделать

#include <string>
  • 12 янв 2018 2018-01-12 17:50:46
@Andrey_Raf, если ответ Вас удовлетворяет, пожалуйста примите его, нажав галочку. А насчёт ошибки: я как-то даже успел баг-репорт отправить в Microsoft, что у них компилятор сломался после обновления, хотя я сам пал жертвой такой же ошибки :) — 12 янв 20182018-01-12 17:54:28.000000
Такую ошибку допустил... Спасибо большое. — 12 янв 20182018-01-12 17:54:28.000000