在没有可用模板的情况下实现 C++ 模板行为
Achieving C++ template behaviour without having templates available
是否可以(简单地)在没有可用模板的情况下实现 C++ 模板行为?我正在使用没有该功能的嵌入式 C++ 工具链,但如果我可以复制它肯定会有用。
作为一个用法示例,我想为不同类型创建多个循环缓冲区。目前,我只有一个 uint8_t
循环缓冲区,但我需要更多。
您不必为每个实现重写它,只需将实际定义包装在宏中即可:
#define GenerateCircBufClass(T)\
class CircBuf_impl_##T \
{\
public: \
CircBuf_impl_##T(); \
~CircBuf_impl_##T(); \
// etc...
};
GenerateCircBufClass(uint8_t)
GenerateCircBufClass(float)
// etc...
是否可以(简单地)在没有可用模板的情况下实现 C++ 模板行为?我正在使用没有该功能的嵌入式 C++ 工具链,但如果我可以复制它肯定会有用。
作为一个用法示例,我想为不同类型创建多个循环缓冲区。目前,我只有一个 uint8_t
循环缓冲区,但我需要更多。
您不必为每个实现重写它,只需将实际定义包装在宏中即可:
#define GenerateCircBufClass(T)\
class CircBuf_impl_##T \
{\
public: \
CircBuf_impl_##T(); \
~CircBuf_impl_##T(); \
// etc...
};
GenerateCircBufClass(uint8_t)
GenerateCircBufClass(float)
// etc...