繁体   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