繁体   English   中英

class 模板中的返回结构 function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM