我试图用静态模板函数创建一个类,以便从其他类中调用它。在类内部,我有一个静态char数组缓冲区和一个带有3个参数的静态encodeEntity函数:
我要填写的实体
我想用来填充实体的功能
我想复制到缓冲区的字符串内容
我要保留缓冲区直到程序结束。我不想在离开函数DE> Entity时丢失它。
我想使用一个简单的类来实例化一个对象,但是它看起来并不漂亮。
我尝试了以下操作:
我将Template函数移到了cpp主体内。据我了解,由于它是模板函数,因此应保留在标头中。当我这样做时,它导致了多个定义编译错误。
我仅将静态成员移动到cpp主体内部以对其进行初始化,因此它也不起作用。
import re
br = re.compile(r"(\r\n|\r|\n)") # Supports CRLF, LF, CR
content = br.sub(r"<br />\n", content) # \n for JavaScript
char EntityDecode::buffer[2048] = {};
class EntityDecoder {
public:
EntityDecoder() = delete;
EntityDecoder(const EntityDecoder &) = delete;
EntityDecoder &operator=(const EntityDecoder &) = delete;
~EntityDecoder() {}
template <typename Entity, typename DecodeFunction>
static void decodeEntity(Entity &oEntity, DecodeFunction &decodeFunction, const std::string &iRawContent) {
size_t length = iRawContent.size();
for (size_t condentIdx = 0; condentIdx < iRawContent.size(); condentIdx++) {
buffer[condentIdx] = iRawContent[condentIdx];
}
Context content{buffer, iRawContent.size()};
decodeFunction(oEntity, content);
}
private:
static char buffer[2048];
};