gpt4 book ai didi

c++ - 类函数的模板变量返回类型

转载 作者:行者123 更新时间:2023-11-28 06:26:35 25 4
gpt4 key购买 nike

我正在尝试创建一个类来解释各种位图类型(例如 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 计算的变量类型指针。我认为将 < template option > 添加到函数中就可以了,但编译器只是在定义第一个 Pixel 函数之后说“missing ; before <”。

编辑:附言!模板参数必须是我可以存储在变量中的东西,例如枚举(为什么我不只使用模板类型)

最佳答案

使返回类型依赖于非类型模板参数Pixel T。一个例子是为此目的创建一个辅助类:

template <PixelOptions T>
struct RetType;

template <>
struct RetType<I8>
{
using type = uint8_t;
};

///More specializations go here.

并将您原来的方法更改为:

typename RetType<T>::type* Pixel(const uint32_t &X, const uint32_t &Y) {
return nullptr;
}

关于c++ - 类函数的模板变量返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com