为啥总是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;
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解决方法