Полиморфизъм задача 4
Здравейте, получавам следната компилационна грешка при така написания код за базовия клас:
Error C2679 binary '>>': no operator found which takes a right-hand operand of type 'T' (or there is no acceptable conversion)
Предполагам причината се крие в предефинирането на оператора >>, може ли да се оправи и как, или трябва да се пренапише изцяло кога, тъй като може и да е тотално оплескан?
#ifndef TYPED_STREAM_H_
#define TYPED_STREAM_H_
#include <istream>
#include <vector>
template <typename T>
class TypedStream
{
private:
std::string _input;
std::vector<T> _values;
protected:
std::istream stream;
public:
TypedStream(const std::string& input) : _input(input) {}
virtual TypedStream<T>& operator>>(T& var)
{
this->stream >> var;
return *this;
}
std::vector<T> readToEnd()
{
T value;
while (this->stream >> value) // error
_values.emplace_back(value);
return _values;
}
};
#endif // !TYPED_STREAM_H_