日期:2014-05-16  浏览次数:20669 次

ubuntu下的C++程序问题。
写了一个头文件,还有一个CPP文件,在VS2008中编译运行没问题。但在Ubuntu下编译不通过。下面是头文件的代码。

#include"iostream"

using namespace std;
template<class T>
class LinearList
{
public:
LinearList(int maxListSize=10);
~LinearList() {delete []element;}
bool IsEmpty()const{return length==0;}
int Length()const{return length;}
bool Find(int k,T &x)const;
int Search(const T &x)const;
LinearList<T>& Delete(int k,T &x);
LinearList<T>& Insert(int k,const T &x);
void Output(std::ostream& out)const;

template<class T>
friend ostream &operator<<(ostream &out,const LinearList<T> &x);
private:
int length;
int maxSize;
T * element;
};

显示的错误是第18行,错误:‘ class T ’ 的声明
第4行,错误:隐藏了模板形参 ‘ class T '
这是怎么回事?如何解决?

------解决方案--------------------
template <class T> 两个都是 T,冲突了吧

把其中一个换成别的名称
------解决方案--------------------
没查过标准,不确定这里是否适用“名字隐藏”原则,所以也不确定到底是VC2008对还是GCC对。
但既然给出的错误描述是这样说的,那就改一改呗。
------解决方案--------------------
编译器不一样啊,Linux下市gcc。vs2008编译器中有的,很多gcc里没有。
------解决方案--------------------
这个东西 编译器不一样 你就没法去说为什么 
类似这样的问题还有很多呢