考虑到以下方案:
#include <iostream>
#include <string>
using namespace std;
struct GenericType{
operator string(){
return "Hello World";
}
operator int(){
return 111;
}
operator double(){
return 123.4;
}
};
int main(){
int i = GenericType();
string s = GenericType();
double d = GenericType();
cout << i << s << d << endl;
i = GenericType();
s = GenericType(); //This is the troublesome line
d = GenericType();
cout << i << s << d << endl;
}
它在视觉工作室11上编译,但不是叮当或 gcc。 它遇到了麻烦, 因为它想要从 < code> GenericType 暗中转换为 < code> < int , 改为 < code>charp , 但是它也可以返回 < code>string , 因此存在模糊( operator=(char)
和 operator=(string)
两个匹配 GenericType
)。
不过,拷贝制作器还不错。
我的问题是:在不修改主内容的情况下,我如何解决这种模棱两可的问题?我需要做些什么才能修改 GenericType
来解决这个问题?