zoukankan      html  css  js  c++  java
  • C++primer plus第六版课后编程题答案10.8(来个高手教教我)

    List.h

    #ifndef LIST_H_
    #define LIST_H_
    template <class T>
    struct Node{
    	T num;
    	struct Node *next;
    };
    template <class T>
    class List{
    	static const int MAX=10;
    private:
    	//T t[MAX];
    	//int top;
    	Node<T> *front;
    	Node<T> *rear;
    	int qsize;
    	Node<T> *now;
    public:
    	//List<T>(int m);
    	List();
    	~List();//构造函数有new ,必须显示析构
    	void add(const T &t);
    	bool isEmpty()const;
    	bool isFull()const;
    	//void set(const T &t)const;
    	void visit(){
    		Node<T> *p=front;
    			while((p++)!=nullptr)
    			{
    				cout<<p->num<<"  ";
    			}
    	};
    };
    #endif

    List.cpp

    #include <iostream>
    #include "List.h"
    using namespace std;
    
    template <class T>
    List<T>::List()	//模板类的定义必须有模板参数,不能写出List::List!!
    {
    	front=rear=nullptr;
    	qsize=0;
    }
    template <class T>
    List<T>::~List()	//模板类的定义必须有模板参数,不能写出List::List!!
    {
    	delete front;//释放指向首指针的内容
    }
    
    template <class T>//必须写出模板类,否则T无效
    void List<T>::add(const T &t) 
    {
    	if(isEmpty())
    	{
    		Node<T> n=new Node<T>{};
    		front=n;
    		n.num=t;
    		n.next=nullptr;
    		qsize++;
    		now=n;//令now指向当前节点
    	}
    	else if(isFull())
    	{
    		cout<<"List is full"<<endl;
    	}
    	else
    	{
    		Node<T> n=new Node<T>{};
    		n.num=t;
    		now.next=n;
    		n.next=nullptr;
    		qsize++;
    		now=n;//令now指向当前节点
    	}
    }
    template <class T>
    bool List<T>::isEmpty()const
    {
    	//front=nullptr;//不是不能改变里面的数据么?
    	qsize=100;
    	cout<<"const is not work! "<<qsize<<endl;
    	return front==nullptr;
    }
    template <class T>
    bool List<T>::isFull()const
    {
    	return qsize==MAX;
    }
    
    

    main108.cpp

    #include <iostream>
    #include "List.h"
    using namespace std;
    void main108()
    {
    	//const int ar1[5]={1,2,3,4,5};
    	//double ar2[12]={1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.1,11.2};
    	List<int> arr1;
    	List<double> arr2;
    	//for(int i=0;i<5;i++)
    		//arr1.add(ar1[i]);
    	arr1.add(10);
    	arr1.visit();
    
    	cin.get();
    
    }
    错误提示:

    错误 3 error LNK2019: 无法解析的外部符号 "public: void __thiscall List<int>::add(int const &)" (?add@?$List@H@@QAEXABH@Z),该符号在函数 "void __cdecl main108(void)" (?main108@@YAXXZ) 中被引用 E:C++ umber10 umber10main108.obj number10
    错误 5 error LNK2019: 无法解析的外部符号 "public: __thiscall List<int>::List<int>(void)" (??0?$List@H@@QAE@XZ),该符号在函数 "void __cdecl main108(void)" (?main108@@YAXXZ) 中被引用 E:C++ umber10 umber10main108.obj number10

    .....

  • 相关阅读:
    Javascript基础知识4
    JavaScript基础知识3
    JavaScript基本知识2
    JavaScript基本知识1
    BFC?来自CSS中的BFC
    创建【哆啦A梦】风格字体
    理解JavaScript函数
    我所了解的BFC
    jQuery
    html
  • 原文地址:https://www.cnblogs.com/qq84435/p/3664815.html
Copyright © 2011-2022 走看看