在定义文件中使用关键字“this” 我正在努力学习C++。所以我开始创建一个简单的类链表。据我所知,您应该将所有方法/构造函数声明放在.h文件中。但是在创建方法prepend时,我遇到了一个问题。如何在定义文件.cpp中使用关键字this:

在定义文件中使用关键字“this” 我正在努力学习C++。所以我开始创建一个简单的类链表。据我所知,您应该将所有方法/构造函数声明放在.h文件中。但是在创建方法prepend时,我遇到了一个问题。如何在定义文件.cpp中使用关键字this:,c++,list,linked-list,C++,List,Linked List,头文件 #ifndef LIST_LIST_H #define LIST_LIST_H template <class T> class List { public: List(T data, List tail): data(data), tail(tail) {} List prepend(T data); List get(int i); private: List tail; T data; }; #endif //LIST_LI

头文件

#ifndef LIST_LIST_H
#define LIST_LIST_H

template <class T>
class List {
public:
    List(T data, List tail): data(data), tail(tail) {}
    List prepend(T data);
    List get(int i);

private:
    List tail;
    T data;
};

#endif //LIST_LIST_H
实现文件

#include "List.h"

template <class T>
List::List(T data, List tail): data(data), tail(tail) {}

template <class T>
List List::prepend(T data) {
    return new List(data, this);
}

我试着寻找解决办法,但因为我是C++新手,我不知道如何搜索它。p> 请学习如何创建一个问题,然后将其添加到问题中,使其成为独立的问题。这是一个真正的问题——pastebin被我的雇主封锁了。要设置代码格式,请粘贴它,选择它,然后单击{}按钮,或者在粘贴它之前在每行前面添加4个空格-在智能编辑器中很容易,例如在vim中的%s/^//中。请阅读。此外,一本好书(例如)应该告诉您如何实现模板化成员函数。列表::prependT data{不幸的是,除了像Joachim Pileborg所说的那样需要在头文件中之外,还需要执行类似List::prependT数据的操作{由于为每个T创建了不同类型的列表,因此需要指定它的类型。这样的列表操作最好需要指针,而不是硬拷贝所有内容。如果现在创建一个列表,它将在尾部创建另一个列表,这将创建另一个列表,依此类推…直到堆栈爆炸。列表不能成为列表的成员se这会使列表无限大。如果你一直在编写Java,那么有很多东西需要忘记。这是一个很好的起点。请学习如何创建一个,然后将其添加到问题中,使其独立。这是一个真正的问题-pastebin被我的雇主阻止。要格式化代码,请粘贴它,选择它,然后单击{}按钮,或者在粘贴前在每行前添加4个空格-在智能编辑器中很容易,例如在vim中的%s/^//中。请阅读。此外,一本好书(例如)应该告诉您如何实现模板化成员函数。列表列表::prependT data{不幸的是,除了像Joachim Pileborg所说的那样需要在头文件中之外,还需要执行类似List::prependT数据的操作{由于为每个T创建了不同类型的列表,因此需要指定它的类型。这样的列表操作最好需要指针,而不是硬拷贝所有内容。如果现在创建一个列表,它将在尾部创建另一个列表,这将创建另一个列表,依此类推…直到堆栈爆炸。列表不能成为列表的成员这将使列表无限大。如果你一直在编写Java代码,那么有很多东西你需要忘记。这是一个很好的起点。