我有一些实现基本Pixel
类的C++代码。这里只是关键部分的桩代码:
// Pixel.h
template <class SizeType>
struct Pixel
{
public:
typedef SizeType Size;
Size R;
Size G;
Size B;
static Size Min;
static Size Max;
TPixel(Size R = Min, Size G = Min, Size B = Min);
};
#include "Pixel.impl"
// Pixel.impl
template <class SizeType> SizeType Pixel<SizeType>::Min = std::numeric_limits<Size>::min();
template <class SizeType> SizeType Pixel<SizeType>::Max = std::numeric_limits<Size>::max();
template <> float Pixel<float>::Min = 0;
template <> float Pixel<float>::Max = 1;
template <> double Pixel<double>::Min = 0;
template <> double Pixel<double>::Max = 1;
我正在尝试在C#中复制这个:
struct Pixel<Size> where Size : struct
{
public Size R;
public Size G;
public Size B;
public static const Size Min; // What should I do here?
public static const Size Max;
}
除了我不知道如何将Min / Max大小包含到类型中。我想能够拥有统一的像素接口,使您可以进行夹紧、添加、缩放等操作。
当我试图处理可能具有任意类型的向量和矩阵时,我遇到了类似的解决方案。有人能建议我如何完成上面的C ++代码吗?
Pixel<TSize>
。请参阅此处的指南:http://msdn.microsoft.com/zh-cn/library/ms229040.aspx - Lukazoiddouble
和float
类型吗?我认为OpenGL已经统一使用float
。如果你做出类似的决定,它将使你的接口更简单,并且可能会有性能上的好处。 - Merlyn Morgan-Graham