Generics 泛型类中的编译器错误c1001
在我班上Generics 泛型类中的编译器错误c1001,generics,compiler-errors,c++-cli,Generics,Compiler Errors,C++ Cli,在我班上 generic <class T> public ref class CFifo { public: enum class EnumResult { ... } EnumResult AddData (int i_iStart, int i_iLength, array<T>^ i_aData); ... } 类CResult是另一个通用类: generic <class TResult> where TResult : va
generic <class T>
public ref class CFifo
{
public:
enum class EnumResult
{ ... }
EnumResult AddData (int i_iStart, int i_iLength, array<T>^ i_aData);
...
}
类CResult
是另一个通用类:
generic <class TResult> where TResult : value class // value class constraint is not necessary
public ref class CResult abstract sealed
generic其中TResult:value-class//value-class约束不是必需的
公共参考类结果摘要密封
我在其他类中使用相同的行CResult::TraceMsg
,没有问题
我可以创建和使用EnumResult
的变量而不会出错,因此我认为将此类型传递给泛型类CResult
也应该可以
有人能解释编译器崩溃的原因吗?如果可能的话,如何修复它?谢谢 发现故障:
这是generic ref class CResult
中的value class
约束我一删除它,编译器崩溃就消失了。奇怪 我不得不在
CResult
中修改代码:从
returnstatic\u cast(iResult);
到
returnstatic_cast(System::Enum::ToObject(TResult::typeid,iResult));
因为我不再能够直接从int
转换到TResult
,这在以前是可能的,因为值类
约束
generic <class TResult> where TResult : value class // value class constraint is not necessary
public ref class CResult abstract sealed
return static_cast<TResult>(iResult);
return static_cast<TResult>(System::Enum::ToObject (TResult::typeid, iResult));