gpt4 book ai didi

c++ - 使用 this = new Foo() 从内部将一个对象的实例设置为另一个对象?

转载 作者:搜寻专家 更新时间:2023-10-31 01:20:03 24 4
gpt4 key购买 nike

我正在使用哈希表并对其进行重新哈希处理,我只是将所有值放入一个新的哈希表中,然后将执行实例设置为这个新的哈希表。

如果可能的话,我不确定是否会参与其中,所以我只想确认是否是这种情况。我正在尝试:

Foo *new_foo = new Foo();
...
delete this;
this = new_foo;

我知道问题不在于 delete 行,因为即使没有它也无法工作。这是错误:错误:左值需要作为赋值的左操作数。

此外,作为附带问题,复制分配数组的最佳/标准方法是什么? *a = *b?显然,我是 C++ 的新手,了解它会有所帮助,但不是必需的。

最佳答案

程序无法修改 this 以指向不同的对象。 this 是一个常量指针(即 T* const )。

this = new_foo; // incorrect.

复制分配数组的最佳/标准方法是什么?

使用 *a = *b; 不会复制整个数组。您只是将 b 的第一个索引处的值复制到 a 的第一个索引处。请改用 std::copy


int a[] = { 1,2,3,4,5 } ;
int b[5] ;

// To copy element of a to b -

std::copy( a, a+5, b ) ; // you need to include <algorithm> header.

关于c++ - 使用 this = new Foo() 从内部将一个对象的实例设置为另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com