背景
如果第三方库有类似的代码
class ThirdPartyClass
{
public:
int value;
ThirdPartyClass(int i) : value(i) {}
ThirdPartyClass(const std::string& s) : value(0) {}
};
bool ThirdPartyFunction(int a, const ThirdPartyClass obj)
{
return a == obj.value;
}
然后可以像这样调用
ThirdPartyFunction(1, 1);
ThirdPartyFunction(1, std::string("Hello, World!"));
问题
是否可以扩展此库(不修改第 3 方代码)以接受以下内容:
ThirdPartyFunction(1, "Hello, World!"); // const char* is not a string, implicit conversion fails
我想避免需要写
ThirdPartyFunction(1, std::string("Hello, World!"));
以上是简化的:在我的真实示例ThirdPartyFunction
中是一个流操作符,并且ThirdPartyClass
是一个允许与流操作符交互的类型包装器。