报错信息:
LinkList.h:
#include <stdio.h> template <typename T> struct Node{ T t; struct Node<T> *next; }; template <typename T> class LinkList { public: LinkList(void);//构造函数 ~LinkList(void);//析构函数 LinkList(const LinkList &linkList);//拷贝函数 public: //业务方法 int add(T t,int pos);//添加数据 T& get(int pos);//获取数据 private: int length;//链表长度 Node<T> *header;//业务节点 };
LinkList.cpp:
#include "LinkList.h" template <typename T> LinkList<T>::LinkList(void)//构造函数 { header = new Node<T>; header->next = NULL; length = 0; } template <typename T> LinkList<T>::~LinkList(void)//析构函数 { Node<T> *tmp = NULL; if(header == NULL){ return; } while (header) { tmp = header->next; delete header; header = tmp; } header = NULL; length = 0; } template <typename T> LinkList<T>::LinkList(const LinkList &linkList)//拷贝函数 { //不写咯 } ////业务方法 template <typename T> int LinkList<T>::add(T t,int pos)//添加数据 { int ret = 0; Node<T> *current = NULL; current = &(LinkList<T>::header);//默认指向头部第一个节点(实际上这个节点用不到咯) for (int i = 0; i < pos && (current->next != NULL); i ++) { current = current->next; } Node<T> *newNode; newNode->t = t; newNode->next = current->next; current->next = newNode; return ret; } template <typename T> T& LinkList<T>::get(int pos)//获取数据 { Node<T> *current = NULL; current = &(LinkList<T>::header);//默认指向头部第一个节点(实际上这个节点用不到咯) for (int i = 0; i < pos && (current->next != NULL); i ++) { current = current->next; } return current->next; }
#include <iostream> #include <string> #include "LinkList.cpp" using namespace std; class Teacher{ public: Teacher(int age,string name){ this->age = age; this->name = name; } void printTeacher(){ cout << " 年龄: " << age << " 姓名: " << name << endl; } private: int age;//年龄 string name;//姓名 }; int main(int argc, const char * argv[]) { Teacher t1(24,"zs"); LinkList<Teacher> list; // list.add(t1, 0); // // Teacher t2 = list.get(0); // // t2.printTeacher(); return 0; }
我的编译器是xcode 7.0.1
请大家帮我看看,这是什么原因,万分感谢!
Teacher类本身没有默认的构造函数,因此Node里面的Tt没法默认构造。
话说你用的啥IDE?
IDE是xcode已经解决,是因为Teacher没有提供默认的构造函数。这明显是xcode应该是编译器使用的C++14标准,你的Node没有声明生成默认构造函数,使用:Node()=default;来声明默认构造函数,还有你的Teacher也没有默认的构造函数。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。