如何从指针类型获取指针的强制转换

时间:2015-07-06 16:06:40

标签: c++11 casting

情况就是这样:

{
   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。但是,我想知道如何从指针类型中获取指针的转换。

1 个答案:

答案 0 :(得分:0)

你的意思是:

foo = (decltype(foo)) malloc(sizeof(decltype(*foo)));

正如@Quentin指出的那样,第二个decltype可以省略:

foo = (decltype(foo)) malloc(sizeof(*foo));