为啥总是syntax error : missing ';' before '<'这个错误。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥总是syntax error : missing ';' before '<'这个错误。相关的知识,希望对你有一定的参考价值。

#ifndef GENERICLIST_H
#define GENERICLIST_H
#include<iostream>
using namespace std;

namespace listsavith

template<class ItemType>
class GenericList

public:
GenericList(int max);

~GenericList();
int length() const;
void add(ItemType new_item);

bool full() const;

void erase();

friend ostream& operator <<(ostream& outs,const GenericList<ItemType>& the_list);

private:
ItemType *item;
int max_length();
int current_length;

;

#endif

#ifndef GENERICLIST_CPP
#define GENERICLIST_CPP
#include<iostream>
#include<cstdlib>
#include "genericlist.h"
using namespace std;

//namespace listsavitch
//
template<class ItemType>
GenericList<ItemType>::GenericList(int max): max_length(max),current_length(0)

item=new ItemType[max];


template<class ItemType>

GenericList<ItemType>::~GenericList()

delete [] item;



template<class ItemType>
GenericList<ItemType>::length() const

return(current_length);


template<class ItemType>
void GenericList<ItemType>::add(ItemType new_item)

if(full())

cout<<"Error: adding to a full list.\n";
exit(1);


else

item[current_length]=new_item;
current_length=current_length+1;

template<class ItemType>
bool GenericList<ItemType>::full() const

return (current_length==max_length);


template<class ItemType>
void GenericList<ItemType>::erase()

current_length=0;

template<class ItemType>
ostream& operator<<(ostream& outs,const GenericList<ItemType>& the_list)

for(int i=0;i<the_list.current_length;i++)
outs<<the_list.item[i]<<endl;
return outs;



//
#endif

//using namespace listsavitch;

int main()

GenericList<int> first_list(2);
first_list.add(1);
first_list.add(2);
cout<<"first_list=\n"<<first_list;
GenericList<char> second_list(10);
second_list.add('A');
second_list.add('B');
second_list.add('C');
cout<<"second_list=\n"<<second_list;
return 0;

参考技术A 1. add 函数的具体实现少了右括号
2. GenericList 的私有成员max_length 申明的地方多了括号,变成了函数申明
3. length 函数具体实现的地方少了返回类型int
4. friend的那个申明需要加上<ItemType>,因为operator<<是一个模板函数,你必须告诉编译器这个friend到底是给哪个模板参数下的operator<<函数的,像这样:
friend ostream& operator << <ItemType>(ostream& outs,const GenericList<ItemType>& the_list);
注意那里有三个<<< 连在一起,为了区分(如果你的编译器不认的话),把前两个和第三个分开来写

应该说这个代码相当不错了,除了最后一点比较难以外,很难想象你会犯下那么多粗心的错误...本回答被提问者采纳

以上是关于为啥总是syntax error : missing ';' before '<'这个错误。的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到这个语法错误(false syntax error pyflakes)

mac git 报错 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missin

modelsim总是编译不成功,出现错误near "module": syntax error。求解答...

shell 脚本,在调试时,FOR循环那行代码,总是出现错误syntax error near unexpected token do(转)

PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法

error C2143: syntax error : missi 是啥错误?