C++/CLI に次のクラスがあり、int プリミティブの明示的なテンプレートのインスタンス化があります。
template<typename T>
public ref class Number
{
T _value;
public:
static property T MinValue
{
T get()
{
return T::MinValue;
}
}
static property T MaxValue
{
T get()
{
return T::MaxValue;
}
}
property T Value
{
T get()
{
return _value;
}
void set(T value)
{
if( value<MinValue || value > MaxValue)
throw gcnew System::ArgumentException("Value out of range");
_value = value;
}
}
};
template ref class Number<int>;
これをコンパイルし、リフレクターを使用して生成されたアセンブリを検査すると、呼び出されたクラスを確認できますNumber<int>
が、C# でこの同じクラスをインスタンス化しようとすると、コンパイラーは一部のSystem::Number
クラスがテンプレート引数を取らないと文句を言います。私は何を間違っていますか?これはまったくできますか?