dimanche 6 août 2017

error: no matching function for call and template argument for template

myclass.cpp: In member function ‘std::string >palindrome::removeNonLetters(std::string)’:

myclass.cpp:22:116: error: no matching function for call to ‘remove_if(std::basic_string::iterator, std::basic_string::iterator, palindrome::removeNonLetters(std::string)::__lambda0)’ characters.erase(remove_if(characters.begin(),characters.end(),[](char characters){return!isalpha(characters);}),characters.end());

myclass.cpp:22:116: error: template argument for ‘template _FIter std::remove_if(_FIter, _FIter, _Predicate)’ uses local type ‘palindrome::removeNonLetters(std::string)::__lambda0’ characters.erase(remove_if(characters.begin(),characters.end(),[](char characters){return!isalpha(characters);}),characters.end());

#include "myclass.h"
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
#include <locale>


using namespace std;
palindrome::palindrome(string c) {

    characters = c;
}


//remove all non-alphabetical characters
string palindrome::removeNonLetters(string a){

    characters = a;
    characters.erase(remove_if(characters.begin(),characters.end(),[](char characters){return!isalpha(characters);}),characters.end());       //remove non letters

    return characters;                         
}


//remove all non-alphabetical characters
string palindrome::lowerCase() {

    transform( characters.begin(), characters.end(), characters.begin(),::tolower );        

    return characters;
}

What might be wrong? please help.

Aucun commentaire:

Enregistrer un commentaire