Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何解决-语法错误:缺少'';在'之前<';_C++_List_Syntax_Linked List - Fatal编程技术网

C++ 如何解决-语法错误:缺少'';在'之前<';

C++ 如何解决-语法错误:缺少'';在'之前<';,c++,list,syntax,linked-list,C++,List,Syntax,Linked List,我一直收到这个错误,它似乎是太模糊的谷歌搜索,所以我把它交给你!我正在尝试创建一个包含帐户对象的链表对象 #include "Customer.h" #include "LinkedList.h" #include "Account.h" #include "Mortgage.h" #include "CurrentAcc.h" #include "JuniorAcc.h" #include "transaction.h" #include <iostream> #include

我一直收到这个错误,它似乎是太模糊的谷歌搜索,所以我把它交给你!我正在尝试创建一个包含帐户对象的链表对象

#include "Customer.h"
#include "LinkedList.h"
#include "Account.h"
#include "Mortgage.h"
#include "CurrentAcc.h"
#include "JuniorAcc.h"
#include "transaction.h"

#include <iostream>
#include <string>

using namespace std;


string name;
string address;
string telNo;
char gender;
string dateOfBirth;
list<Account> accList;  // Error
list<Mortgage> mortList;  //Error
下面是我的链表class.h文件的创建

#pragma once

#include <iostream>
using namespace std;

template <class T>
class node;

template <class T>

class list
{

public:
list() { head = tail = NULL; }
~list();
void add(T &obj);
T remove(int ID);
void print(ostream &out);
T search(int ID);

private:
node<T> *head, *tail;
};

template <class T>
class node
#pragma一次
#包括
使用名称空间std;
模板
类节点;
模板
班级名单
{
公众:
list(){head=tail=NULL;}
~list();
无效添加(T&obj);
T删除(int-ID);
作废打印(ostream&out);
T搜索(int-ID);
私人:
节点*头,*尾;
};
模板
类节点
{ 公众: node(){next=NULL;} //私人: T数据; 节点*下一步; };

模板
列表::~list()
{
}

您正在全局命名空间中定义自己的名为
list
的类,并使用命名空间std放置
list
的模板可用,这将导致歧义,从而导致编译错误

你应该:

  • 避免使用命名空间std放置
  • 永远不要把它放在标题中,因为它会对使用该标题的任何人造成名称空间污染
  • 避免将自己的声明放在全局命名空间中
  • 避免给自己的声明起与标准库中的名称相同的名称
  • 使用标准库工具,而不是编写自己的版本

您的LinkedList.h中是否定义了列表?有哪些错误?大概,
list
Account
Mortgage
在全局命名空间中不可用。从包含
开始,确保在要包含的标题中声明了其他类型,如果它们在命名空间中,请为它们添加限定条件。@KonradRudolph:您能解释一下为什么要这样排序吗?我无法想象这会有什么改进。您正在编写自己的名为
list
的类,并使用namespace std放置
?马上停止@迈克:嗯,这可能与手头的问题无关,但我认为这是一个一般性的指导方针。如果在您的头文件和标准库头文件中没有奇怪的东西,那么它就不重要了。但宏使这一点更加复杂:例如,用户定义的头可以合法地包含与标准库函数同名的宏。
#pragma once

#include <iostream>
using namespace std;

template <class T>
class node;

template <class T>

class list
{

public:
list() { head = tail = NULL; }
~list();
void add(T &obj);
T remove(int ID);
void print(ostream &out);
T search(int ID);

private:
node<T> *head, *tail;
};

template <class T>
class node
template <class T>
list<T>::~list()
{
}