如何返回一个指针(指向带有模板参数类型的方法中模板类型的对象)

How to return a pointer (to a object of template type within a method with a template argument type)

本文关键字:类型 方法 参数 对象 返回 何返回 指针 一个      更新时间:2023-10-16

这个问题与模板无关。

template <typename T>
T* MyQueue<T>::pop()
{
    T* object = nullptr;
    //if (head != nullptr)
    //{
    //  object = head->data;
    //  head = head->next;
    //}
    return *object;
}

这会给出以下错误(当使用T作为字符串时)

error C2440: 'return': cannot convert from 'std::string' to 'std::string *'

如何返回类型为T的指针?

我不能使它工作,即使没有初始化objectnullptr

第二行:

T* MyQueue<T>::pop()

这意味着你的pop()方法返回一个指向t的指针

第10行:

    return *object;

这意味着返回*(T*)object - object,而不是指向它的指针。

决定你想做什么,要么改变方法的返回类型,要么在返回语句之前不解引用指针。

在返回对象之前,对指向该对象的指针解引用。你应该返回指针,像这样

return object;

你得到的错误是因为你返回了指针指向的值

相关文章: