c++ - 使用C++中的模板从函数返回指针

标签 c++ function pointers linked-list main

Node<int> *head = takeInput()内部的行给出错误,没有匹配的函数调用'takeInput()'。您能帮我一下,告诉我我在这里犯了什么错误,以便将来不再这样做。谢谢!

#include<iostream>
using namespace std;

template<class T>
class Node{

public: 
    T data;
    Node *next;
    Node(T x){
        data = x;
        next = NULL;
        }
    
};

template<typename T>
Node<T> * takeInput(){
    T data;
    cin>>data;
    Node<T> *head = NULL;
    Node<T> *tail = NULL;
    
    while(data != -1){
        Node<T> *newNode = new Node(data);
        
        if(head == NULL){
            head = newNode;
            tail = newNode;
        }else{
            tail->next = newNode;
            tail = tail->next;
            }
        cin>>data;
        }
    return head;
    }
    
int main(){
    Node<int> *head = takeInput();
    cout<<head->data;
    }

最佳答案

您的代码有缺陷;
您的比较head == NULL始终为null,每次函数运行都因为您分配NULL Node<T> *head = NULL;在功能开始时。
并且使用c++中不推荐使用的 NULL ,请使用 nullptr
自由自在并修改了您的功能。有很多方法可以实现下面的功能,因为我现在把它当作下面的方法,我并不是说这是最好的方法。

template<typename T>
void takeInput( Node<T>*& head, T val ){

    Node<T>* newNode = new Node<T>( val );

    if ( head == nullptr )
    {
        head = newNode;
    }
    else
    {
        Node<T>* tmp = head;

        while ( tmp->next != nullptr ) tmp = tmp->next;

        tmp->next = newNode;

    }
}
    
int main()
{
    Node<int> *head;
    
    takeInput( head, 10 );
    takeInput( head, 20 );
    takeInput( head, 30 );

    std::cout<< head->data << std::endl;
    std::cout<< head->next->data << std::endl;
    std::cout<< head->next->next->data << std::endl;

}

关于c++ - 使用C++中的模板从函数返回指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63760260/

相关文章:

c++ - 从包含伪装成随机字符 C++ 的二进制数的文件中读取?

javascript - 未捕获的类型错误 : undefined is not a function (on video pause function)

c++ - 指向抽象类型的指针数组

c++ - 有人可以解释一下吗?

c - int a[20], "&a + 4"的答案是什么?

c++ - 在许多不同的类中调用相同的函数

c++ - 如何通过 decltype 声明迭代器的值

c++ - 多个隐式转换运算符

c++ - 如何在 Visual Studio 操作中输出新行?

javascript - 导入的JS文件-错误-未声明[JSC_UNDEFINED_VARIABLE]变量分页