簡體   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