我正在尝试编写一个通用函数(使用模板)来添加整数并在字符或字符串的情况下进行连接。以下适用于字符串和整数,但不适用于字符。
string operator+(char a,char b)
{
string c= string(1,a) + string(1,b);
cout<<c;
return c;
}
template<typename T>
void add(T a,T b)
{
cout<<endl;
cout<<a+b;
cout<<endl;
}
int main()
{
//string a="Stack",b=" Overflow"; //Works fine
//int a=1,b=2; //Works fine
char a='a',b='b'; //ISSUE HERE
add(a,b);
return 0;;
};
对于字符,它会添加 ascii 而不是连接。因此,我重载了运算符“+”以添加两个字符。
string operator+(char a,char b)
{
string c= string(1,a) + string(1,b);
cout<<c;
return c;
}
但似乎我们甚至不能重载运算符来添加两个内置类型。
typecast_overloading.cpp:5: error: âstd::string operator+(char, char)â must have an argument of class or enumerated type
那么,我如何字符?
编辑:这不是“我可以重载内置”类型的副本。我知道我不能。我只是展示了我尝试过的方法和无效的方法。可能在不超载的情况下可以达到预期的结果。我期待这些其他方式。
std::string operator+(char, char)
C++ 标准不允许(您不能重载内置类型的运算符)。
但是您可以专门 void add(T a, T b)
针对以下char
类型:
template<>
void add(char a, char b)
{
std::cout << a << b;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句