繁体   English   中英

如何在C ++中为此分配指针?

[英]How to assign pointer to this in C++?

我正在尝试实现treap类,所以我有以下代码:

void item::insert(item* it) {
     if (!this)
         this = it;
     .....

我无法使用GCC进行编译:

error: lvalue required as left operand of assignment

我知道,我可以简单地分配给所有成员itthis ,但有另一种方式?

根据第9.3.2 / 1条:

在非静态(9.3)成员函数的主体中,关键字this是一个prvalue表达式,其值是为其调用该函数的对象的地址。

因此,假定已正确分配了从其调用成员函数的对象,则this指针永远不能在非静态成员函数中为nullptr (在对成员指针进行了调用的情况下,此行为似乎未定义 )。

第二: 不要尝试更改this指针,因为它是不可分配的 有充分的理由。

我知道,我可以简单地分配给所有成员itthis ,但有另一种方式?

您正在寻找*this = *it this不是左值。


您可能应该使用item const&而不是item*

void item::insert(item const& it) {
    *this = it;
}

作为一个方面说明: this绝不可能在任何明确的程序空指针,因为方法只能呼吁的对象。 空指针不指向对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM