簡體   English   中英

如何將指向 object 的指針分配給指向同一 class 的 object 的另一個指針?

[英]How to assign a pointer to object to another pointer to object of same class?

我有一個名為arr的 class ,它有一個名為_union的 function ,如下所示:

template<class T>
arr<T> *arr<T>::_union(arr<T> B) {
    arr<T> *C(this->length + B._length());
    bool isPresent = false;
    for (int i = 0; i < length; i++)
        C->push_back(this->get(i));
    for (int j = 0; j < B._length(); j++) {
        for (int k = 0; k < C->_length(); k++) {
            if (B.get(j) == C->get(k))
                isPresent = true;
        }
        if (!isPresent)
            C->push_back(B.get(j));
        isPresent = false;
    }

    return C;
}

function 返回 object 的指針,該指針是在此函數的 scope 中新創建的。

在主要的 function 中,我編寫了如下代碼:

arr<int> *a3 = a1._union(a2);
a3->display();

當我運行時,這給了我一個錯誤:

在此處輸入圖像描述

這里有什么問題? 如果我不使用任何指針而只返回正常的 object 那么一切都很好。

請幫我。 此外,我在 class 中沒有任何復制構造函數。 我只是想用數據和函數創建我自己的數組 class 。

在這段代碼中

arr<T> *C(this->length + B._length());

C是一個指針, this->length + B._length()是一個 integer,因此出現錯誤。 您不能將 integer 分配給指針。

我猜你是想寫這段代碼

arr<T> *C = new arr<T>(this->length + B._length());

此代碼使用new分配一個新的arr<T> object 並使用 integer 參數this->length + B._length()調用該 object 的構造函數。

然而,像這樣使用動態分配通常是個壞主意。 您應該考慮在不使用指針的情況下重新設計您的 function。

template<class T>
arr<T> arr<T>::_union(arr<T> B) {
    arr<T> C(this->length + B._length());
    ...
    return C;
}

這將要求您為arr<T>定義一個復制構造函數等。 但這是正常的 C++ 編程,你不應該不願意這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM