[英]Return struct in class template function
我正在学习 C++ 和我前一段时间找到的一本书中的一些练习。 我的任务如下所述,我试图找到一个解决方法来返回我为模板 function getLastNode
创建的模板节点,以在列表末尾添加一个节点。 是否有可能做到这一点,目前我找不到一种方法让我们称之为解释编译器什么是 TNode 作为 class 返回值中的结构。
我可能有在此代码中声明节点的最佳方式。 也许,class 中的结构会使 class 模板方法实现复杂化。 你觉得还有别的策略吗? 请告诉我
干杯!
/* Implement the data structure dynamic doubly linked list (DoublyLinkedList<T>) - list,
* the elements of which have pointers both to the next and the previous elements. Implement
* the operations for adding, removing and searching for an element, as well as inserting
* an element at a given index, retrieving an element by a given index and a method, which returns an array with the elements of the list*/
#include <iostream>
template<typename TValue>
class List{
struct TNode{
TValue value;
TNode *previous;
TNode *next;
}Node;
public:
List();
~List();
void addNode(TValue);
private:
TNode *root;
TNode getLastNode(TNode);
};
template<typename TValue>
List<TValue>::List():root(0) {}
template<typename TValue>
List<TValue>::~List<TValue>(){
}
template<typename TValue>
TNode List<TValue>::getLastNode(TNode node){
if(node.next==nullptr)
return node;
else
getLastNode(node.next);
}
template<typename TValue>
void List<TValue>::addNode(TValue value){
const TNode last = getLastNode(root);
last.next = Node;
last.next->value = value;
}
int main(){
List<int> test;
return 0;
}
要为getLastNode
方法返回TNode
,我必须将auto
添加到其 class 方法声明中。
学分:@JaMiT
template<typename TValue>
auto List<TValue>::getLastNode(TNode node){
if(node.next==nullptr)
return node;
else
getLastNode(node.next);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.