我有
的模板功能template <typename T>
在其他地方定义:
void* v.addr;
我需要简化*((T*)(v.addr))=value;
我认为它可能是:(T&)(v.addr)=value;
但是当我读到堆栈溢出时它不起作用。
还有其他办法吗?
答案 0 :(得分:3)
除了删除多余的括号外,你无法用该表达式做什么:
*(T *)v.addr = value;
答案 1 :(得分:1)
获取您的类型v
并添加:
template_typename T>
T& get_addr() const{ return *static_cast<T*>(addr); }
然后调用:
v.get_addr<T>() = value;
将丑陋的演员阵容移动到一个位置(并使它们更明确)。