64,682
社区成员
发帖
与我相关
我的任务
分享
typedef ProtoSaveBody ProtoReqX;
typedef ProtoSaveBody ProtoReqY;
typedef ProtoSaveBody ProtoReqZ;
t = new(malloc(FIX_SIZE(namespaceA::ProtoReqX))) namespaceA::ProtoReqX(param1, param2);
.......
namespaceA::ProtoReqX* t = (namespaceA::ProtoReqX*) (decoder);
PL_DEL(ProtoReqX, t);
free(t);
#include <iostream>
#include <typeinfo>
class A {
};
int main()
{
A* a;
typeof(a) b = new A();
std::cout << typeid(b).name() << "\n";
}
[/quote]
方法倒是多:
1. 换项目
2. 把你的模板代码放到 boost 的文件下面, 假装不是你写的.
3. 换编译器, VC2010 就支持 typeof 了
4. boost 当中也有 typeof, 当然, 它是使用模板来实现的.#include <iostream>
#include <typeinfo>
class A {
};
int main()
{
A* a;
typeof(a) b = new A();
std::cout << typeid(b).name() << "\n";
}
template <typename T>
void PL_DEL(T* x)
{
x->~T();
}
模板参数会推导, 不用给出, 只需要 PL_DEL(t) 就行了.