在C ++中解压缩一个解除引用的指针

时间:2015-12-11 19:56:47

标签: c++ pointers decltype

有人可以向我解释为什么我不能做以下事情:

T

这会抛出C464'int&':不能使用'new'来分配引用。我该怎么做这样的事情?我需要的是我发送的变量的derefferenced基类型。

这虽然有效

IFoo

我理解上面的代码是如何工作的,但我将如何使用new执行类似的操作?

1 个答案:

答案 0 :(得分:16)

取消引用运算符*返回引用,您无法使用new分配该引用。相反,您可以在<type_traits>

中使用std::remove_pointer
int* b = new int(5);
int* c = new std::remove_pointer<decltype(b)>::type(5);    
std::cout << *c << std::endl;