我在MyVal类上进行自动编码/解码
之类的东西template<typename T>
class MyVal
{
public:
MyVal() {}
MyVal(T v)
{
encode(v);
}
operator T ()
{
return decode();
}
operator const T () const
{
return decode();
}
MyVal<T>& operator=(T& v)
{
encode(v);
return *this;
}
}
我有
MyVal<int> some;
大部分时间都可以正常运行,但是如果我运行printf("%d", some)
,它就不会调用任何T(),因此它不会给我解码的值。
有没有办法让printf在不改变MyVal类的任何代码的情况下工作?
答案 0 :(得分:0)
printf
假定您(程序员)负责传递正确的参数类型。由于您承担了这一责任,因此您无法依赖自动转换。
您必须手动将变量强制转换为正确的类型。
printf("%d", int(some));