新手求助 从十点搞到现在了
是关于建一个类模板然后实例化一个数组进行运算
下面是简短代码
最下面是错误及疑惑
template <typename V>
class T_Vector
{public:
V *p;
int length;
T_Vector(int n)
{ int i;
length=n;
p=new V[length];
for( i=0;i<length;i++)
{p[i]=0;}
}
T_Vector(V *p1,int n)
{ length=n; //这句很重要
p=new V[n];
int i;
for( i=0;i<n;i++)
{p[i]=p1[i];}
}
~T_Vector()
{delete[] p;
length=0;
}
//+
template<typename V>friend T_Vector<V>operator+(const T_Vector<V> &a,const T_Vector<V> &b)
{int i,n;
n=a.length;
V *temp=new V[n];
for(i=0;i<n;i++)
{temp[i]=a.p[i]+b.p[i];}
return T_Vector(temp,n);
}
template<typename V> T_Vector<V>operator=(T_Vector<V>&c)
{int i,n=c.length;
for(i=0;i<;i++)
{p[i]=c.p[i];}
return *this;
} template<typename V>friend istream&operator>>(istream &input,T_Vector<V>&c)
{int i,n=c.length;
for( i=0;i<n;i++)
{input>>c.p[i];}
return input;
} template<typename V> friend ostream&operator<<(ostream &output,const T_Vector<V>&c)
{int i,n=c.length;
for(i=0;i<n;i++)
{ output<<c.p[i]<<" ";}
return output;
}
};
int main()
{int n;
cout<<"现用整形数字实例化两个向量,请输入两个向量的维度"<<endl;
cin>>n;
T_Vector<int> a(n),b(n),c(n);
cout<<"请输入向量 a "<<endl;;
cin>>a;
//cout<<"A "<<a<<endl; //<<>>没问题
cout<<"请输入向量 b "<<endl;;
cin>>b;
//cout<<"B "<<b<<endl;
//c=a; //等于号没问题 =_=
//cout<<"C "<<c<<endl;
// c=a+b;
cout<<"a+b="<<a+b<<endl;
cout<<"a+b="<<c<<endl;
//用C=a+b c=a-b c=a*b再cout<<就是不可以..莫名其妙..TAT
//会提示 _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
//百度到是堆出错了但是找来找去找不到
}
打扰大家了~~~
是关于建一个类模板然后实例化一个数组进行运算
下面是简短代码
最下面是错误及疑惑
template <typename V>
class T_Vector
{public:
V *p;
int length;
T_Vector(int n)
{ int i;
length=n;
p=new V[length];
for( i=0;i<length;i++)
{p[i]=0;}
}
T_Vector(V *p1,int n)
{ length=n; //这句很重要
p=new V[n];
int i;
for( i=0;i<n;i++)
{p[i]=p1[i];}
}
~T_Vector()
{delete[] p;
length=0;
}
//+
template<typename V>friend T_Vector<V>operator+(const T_Vector<V> &a,const T_Vector<V> &b)
{int i,n;
n=a.length;
V *temp=new V[n];
for(i=0;i<n;i++)
{temp[i]=a.p[i]+b.p[i];}
return T_Vector(temp,n);
}
template<typename V> T_Vector<V>operator=(T_Vector<V>&c)
{int i,n=c.length;
for(i=0;i<;i++)
{p[i]=c.p[i];}
return *this;
} template<typename V>friend istream&operator>>(istream &input,T_Vector<V>&c)
{int i,n=c.length;
for( i=0;i<n;i++)
{input>>c.p[i];}
return input;
} template<typename V> friend ostream&operator<<(ostream &output,const T_Vector<V>&c)
{int i,n=c.length;
for(i=0;i<n;i++)
{ output<<c.p[i]<<" ";}
return output;
}
};
int main()
{int n;
cout<<"现用整形数字实例化两个向量,请输入两个向量的维度"<<endl;
cin>>n;
T_Vector<int> a(n),b(n),c(n);
cout<<"请输入向量 a "<<endl;;
cin>>a;
//cout<<"A "<<a<<endl; //<<>>没问题
cout<<"请输入向量 b "<<endl;;
cin>>b;
//cout<<"B "<<b<<endl;
//c=a; //等于号没问题 =_=
//cout<<"C "<<c<<endl;
// c=a+b;
cout<<"a+b="<<a+b<<endl;
cout<<"a+b="<<c<<endl;
//用C=a+b c=a-b c=a*b再cout<<就是不可以..莫名其妙..TAT
//会提示 _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
//百度到是堆出错了但是找来找去找不到
}
打扰大家了~~~