我有一些这样的C#代码:
string GetString(int n, CultureInfo cultureInfo)
{
T value = data[n];
IFormattable formattable = value as IFormattable;
if (formattable != null)
return formattable.ToString(null, cultureInfo)
return value.ToString();
}我正尝试在一个C++泛型类中做同样的事情:
String^ GetString(int n, CultureInfo^ cultureInfo)
{
T value = data[n];
IFormattable^ formattable = dynamic_cast<IFormattable^>(value);
if (formattable != nullptr)
return formattable->ToString(nullptr, cultureInfo);
return value->ToString();
}当我尝试编译它时,我得到:
error C2681: 'T': invalid expression type for dynamic_cast我不确定为什么它不能编译,因为我认为dynamic_cast类似于C#中的as运算符
发布于 2015-08-29 02:12:20
我看到有人在另一篇文章中提到泛型和dynamic_cast存在问题,并能够解决这个问题。
我认为问题出在IFormattable上,但问题出在“值”上。
如果我首先将值转换为Object^,它编译得很好,并且可以工作:
String^ GetString(int n, CultureInfo^ cultureInfo)
{
T value = data[n];
IFormattable^ formattable = dynamic_cast<IFormattable^>((Object^)value);
if (formattable != nullptr)
return formattable->ToString(nullptr, cultureInfo);
return value->ToString();
}https://stackoverflow.com/questions/32277145
复制相似问题