我试图创建一个类来解释各种位图类型(例如24位rgb或16位单色..不管)。我对模板不太了解,所以也许有人会告诉我为什么这会给我一堆错误?类功能的模板变量返回类型
enum PixelOptions {
I8, I16, I32, I64, F32, F64
};
template <PixelOptions T>
class BitmapInterpreter {
uint32_t Width;
uint32_t Height;
void* Data;
public:
BitmapInterpreter(uint32_t Width, uint32_t Height, void* Data) {
this->Width = Width;
this->Height = Height;
this->Data = Data;
}
uint8_t* Pixel<I8>(const uint32_t &X, const uint32_t &Y) {
return nullptr;
}
uint16_t* Pixel<I16>(const uint32_t &X, const uint32_t &Y) {
return nullptr;
}
uint32_t* Pixel<I32>(const uint32_t &X, const uint32_t &Y) {
return nullptr;
}
};
该函数只是占位符。基本上我希望它根据声明的方式返回一个从x和y计算出来的变量类型指针。我认为添加<模板选项>功能会做到这一点,但编译器只是在定义第一个Pixel函数之后说“缺少;在<之前”。
编辑:PS!模板参数必须要有些东西我可以在一个变量存储数据,如枚举(我为什么不直接使用的模板类型)
“基于它是如何宣称”那么,你如何从X的声明去和Y到返回类型?发布时,X和Y总是类型为'const uint32_t'。依赖关系在哪里? – 2015-02-09 18:58:02
我的意思是如果我做“BitmapInterpreter香蕉(10,10,pData); BitmapInterpreter 橙色(10,10,pData);”那么如果我打电话banan.Pixel(1,0)我得到pData + 1,如果我打电话orange.Pixel(1,0)我得到pData + 2 –
user81993
2015-02-09 19:00:13
请添加相关信息的问题本身,而不是解释它的意见。在评论中张贴代码是一件痛苦的事情,并且很难在之后阅读。 – 2015-02-09 19:11:44