关于2 个重载没有“this”指针的合法转换的问题

各路大神求救
在自己做一个string的时候,想要使得可以使用cin输入
所以在类中写了如下代码
friend istream & operator >>(istream &is,const String &t)
{
char a;
while(is)
{
a=getchar();
t.s.push_back(a);
}
return is;
}
但是编译显示error C2663: “std::vector<_Ty>::push_back”: 2 个重载没有“this”指针的合法转换
String是我自己定义的string,使用的是vector s;
谢谢~

不应该是is>>a吗,还有t被const修饰不能改变吧