由于我似乎无法将转换类的构造函数设为静态,因此我尝试伪造它,但它给了我一个关于未解析外部的错误:
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;
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?
这是一个简单的解决方案,可以完成这项工作。
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];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |