Ops, deveria ter feito isso mesmo Segue o código completo:
#include<iostream>#include<string>using namespace std;class String {private: int size; char *x; char c;public: String(); //construtor default ~String(); friend istream &operator>>(istream &C, String &); void operator()(const int &, const char &); friend ostream &operator<<(ostream &, const String &); void compare(char &);};String::String(){ size=0; x=NULL; c=' ';}String::~String(){ if(x!=NULL){ delete[] x;}}void String::operator()(const int &N, const char &C) //Atribuição de valores aos parametros do objeto da classe{ cout<<"Entrei no operator ()!"<<endl; if(x!=NULL)delete[] x; size=N; x=new char[N]; c=C;}istream &operator>>(istream &C, String &S){ cout<<"Entre com o conteúdo do string: "; cin.getline(S.x, S.size); //S.x ~ char x[] e S.size ~ int size (Parametros do objeto da classe); return C;}ostream &operator<<(ostream &C, const String &S){ cout<<S<<endl; return C; //Retorna um ostream para encadear a função <<}void String::compare (char &C) //Substitui os caracteres iguais ao de C no string por um '_'{ for(int i=0;i<size;i++){ if(x[i]=C)x[i]='_';}}int main(){ String S; int N; char x; cout<<"Entre com o tamanho do string: "; cin>>N; cout<<"Entre com o parametro de comparacao do String: "; cin>>x; S(N,x); cin>>S; S.compare(x); cout<<S; return 0;}