С++Advanced, Task 05_03 - Parser - работа с темплейти
Здравейте,
не мога да разбера защо в main() и на трите места в Parser<int> p(std::cin, stopLine); на std::cin ми дава следната грешка (с описание на съответния тип, че го няма): " no instance of constructor "Parser<T>::Parser[with T=std::string (съответно int, и Song)]" matches the argument list argument types are: (std::istream, std::string) ?
в Parser.h работя с темплейти: (Също и класа Song не го разпознава в този хедър, защо?) Явно нещо много съм "разкрасила" с новите знания... опитвам се и за Song да направя специализация, но само се опитвам ...
Може би подходът за решаване на задачата ми е погрешен? Моля за хелп...
Parser.h
template <typename T>
class Parser {
private:
    static getLine(istream & in, std::string s) {
        T variableUnknownType;
        while (in && s != this->limiter) {
            in >> variableUnknownType;
            this->dataLi.push_back(variableUnknownType);
            ostringstream oss;
            oss << variableUnknownType;
            s = oss.str();
        }
    }
    
    std::string limiter;
    std::list<T> dataLi;
public:
    Parser(std::cin, std::string limiter) :
        dataLi(Parser::getLine(std::cin, limiter),
            limiter(limiter)) {}
    template <typename T1>
    bool readNext(T1& o) {
        if (!this->dataLi.empty()) {
            o = *(dataLi.begin());
            this->dataLi.erase(dataLi.begin());
            return true;
        }
        return false;
    }
    bool readNext<Song> (Song & o) {
        if (!this->dataLi.empty()) {
            o = *(dataLi.begin());
            this->dataLi.erase(dataLi.begin());
            return true;
        }
        return false;
    }