因为我似乎无法使我的转换类的构造函数变为静态,所以我尝试伪造它但它给了我一个关于未解析的外部的错误:
struct FloatConversions {
static std::array<float, 256> ByteLUT;
struct Initializer {
Initializer() {
for (double i = 0; i < 256; i++) {
ByteLUT[i] = i / 255.0;
}
}
};
Initializer Init;
static inline float ByteToFloat(int val) {
return ByteLUT[val];
}
static inline uint8_t FloatToByte(float val) {
return static_cast<uint8_t>(val * 255.0f);
}
};
typedef FloatConversions FC;
可能是什么问题?
答案 0 :(得分:4)
这是一个完成这项工作的简单解决方案。
float ByteToFloat(int val)
{
static const struct FloatConversions
{
std::array<float, 256> ByteLUT;
FloatConversions()
{
for (int i = 0; i < 256; i++)
{
ByteLUT[i] = i / 255.0f;
}
}
} conveter;
return conveter.ByteLUT[val];
}