风澜舞 2019-11-02 10:56 采纳率: 0%
浏览 186

怎么解决C++中模板中引用形参处传入字面值得问题?

我想解决在主函数中,dList.add()函数处直接传入字面值,而不是定义变量再传入,比如直接传入3,就会出现字面值不能赋值给引用的问题,,该如何修改,以及为什么。。。。

现在如果传入字面值将报错

// 使用类模板,实现双向链表


#include <iostream>

using namespace std;

template<typename T>
struct Node {
    Node(T& d):c(d), next(0), pref(0){}
    T c;
    Node *next, *pref;
}; //---------------------------

template<typename T>
class List{
    Node<T> *first, *last;
public:
    List();
    void add(T& c);  //添加元素
    void remove(T& c); // 删除指定元素
    Node<T>* find(T& c); // 查找元素
    void print(); //打印链表
    ~List();  //析构
};//---------------------

template<typename T>
List<T>::List():first(0), last(0){}
//--------------------------
template<typename T>
void List<T>::add(T& n){
    Node<T>* p = new Node<T>(n);
    p->next = first; first = p;
    (last ? p->next->pref : last) = p;
} //------------------------

template<typename T>
void List<T>::remove(T& n){
    Node<T> * p;
    if(!(p = find(n))) return ;
    (p->next ? p->next->pref : last) = p->pref;
    (p->pref ? p->pref->next : first) = p->next;
    delete p;
}

template<typename T>
Node<T>* List<T>::find(T& n){
    for(Node<T>* p=first; p; p=p->next)
        if(p->c==n) return p;
    return 0;
}//--------------------------

template<typename T>
List<T>::~List(){
    for(Node<T>* p; p = first; delete p)
        first = first -> next;
}//-----------------------------

template<typename T>
void List<T>::print(){
    for(Node<T>* p = first; p; p = p->next)
        cout << p->c << " ";
    cout << endl;
}

int main()
{
    List<double> dList;
    double a = 3;
    double b = 4;
    double c= 5;
    dList.add(a);
    dList.add(b);
    dList.add(c);
    dList.print();
    dList.remove(a);
    dList.print();
    return 0;
}

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-11-02 11:00
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 python变量和列表之间的相互影响
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)