#include <iostream>
template <class _Data_Type>
class _T
{
private:
int MaxSize;
int _Length;
_Data_Type* K;
public:
_T(int _Para_Size);
~_T(){delete [] K;};
bool _Creat();
};
template<class _Data_Type>
_T<_Data_Type>::_T(int _Para_Size)
{
MaxSize=_Para_Size;
K=new _Data_Type[_Para_Size];
_Length=0;
}
template<class _Data_Type>
bool _T<_Data_Type>::_Creat()
{
_Data_Type _Inpute_Ele;
while (std::cin>>_Inpute_Ele&&(_Length<MaxSize))
{
K[_Length]=_Inpute_Ele;
_Length++;
}
return true;
}
int main()
{
_T<int> _a(2);
_a._Creat();
_T<int> _b(3);
_b._Creat();
return 0;
}
为什么本人创建对象_a之后就无法创建对象_b,具体创建完对象_a之后控制台直接就结束了.
bool _T<_Data_Type>::_Creat()
{
_Data_Type _Inpute_Ele;
while (std::cin>>_Inpute_Ele&&(_Length<MaxSize)) //是不是这里除了问题,本人这里设置的无效字符或ctrl+z退出破坏了CIN
//但没有在下面重置一下输入流导致创建第二个对象的时候cin还处于eofbit
//就没法输入直接退出?
{
K[_Length]=_Inpute_Ele;
_Length++;
}
return true;
}
解决方案
80
不用判断if (std::cin.eof()==1),你按ctrl+D,进入的是else if(std::cin.fail()==1),而在这个里面你应该退出循环