【问题标题】:Decltype a dereferenced pointer in C++ [duplicate]Decltype C ++中的取消引用指针[重复]
【发布时间】:2015-12-11 19:56:46
【问题描述】:

有人可以向我解释为什么我不能按照以下方式做某事:

int* b = new int(5);
int* c = new decltype(*b)(5);

cout << *c << endl;

这会抛出 C464 'int &': cannot use 'new' 来分配引用。我将如何执行这样的操作?我需要的是我发送的变量的取消引用基类型。

这可行

int* b = new int(5);
int** a = new int*(b);

decltype(*a) c = *a;
cout << *c<< endl;

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

【问题讨论】:

标签: c++ pointers decltype


【解决方案1】:

取消引用运算符* 返回一个引用,您不能使用new 分配该引用。相反,您可以在&lt;type_traits&gt; 中使用std::remove_pointer

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

【讨论】:

  • 希望我有 15+ 人对此表示赞同。我明白了,非常感谢!
  • @IlhanKarić 您可以接受答案,这是对您认为有帮助的答案的奖励。
  • 你今天救了我的命!
猜你喜欢
  • 1970-01-01
  • 2015-10-30
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 2021-07-04
  • 1970-01-01
  • 2011-06-17
相关资源
最近更新 更多