情况就是这样:
{
MyStruct * foo;
// works perfectly! When I change MyStruct to MyOtherStruct then
// I do not have to change the sizeof expression.
foo = (MyStruct *) malloc(sizeof(decltype(*foo)));
// The cast has to be adapted.
}
如何为演员(MyStruct *)
实现这种通用语法?我尝试了很多,但没有运气。
使用C ++ 11
更新
根据 Igor Tandetnik ,我可以使用new
。但是,我想知道如何从指针类型中获取指针的转换。
答案 0 :(得分:0)
你的意思是:
foo = (decltype(foo)) malloc(sizeof(decltype(*foo)));
正如@Quentin指出的那样,第二个decltype
可以省略:
foo = (decltype(foo)) malloc(sizeof(*foo));