#include<iostream>
using namespace std;
const int size=4;
template<class datatype>
class vector
{
datatype *v;
public:
vector()
{
v=new datatype[size];
for(int i=0;i<size;i++)
{
v[i]=0;//initilaizing vector
}
}
vector(datatype *ptr)
{
//v=ptr;
for(int i=0;i<size;i++)
{
v[i]=ptr[i];
}
}
datatype operator*(vector &obj)
{
datatype sum=0;
for(int i=0;i<size;i++)
{
sum+=(this)->v[i] * obj.v[i];
}
return sum;
}
};
int main()
{
int x[4]={1,2,9,11};
int y[4]={4,7,7,4};
vector<int> v1;
v1(x);//no matching call
vector<int> v2;
v2(y);//no matching call
// v1(x);
// v2(y);
int total=v1*v2;
cout<<"Total of v1*v2="<<total<<endl;
}
我传递整数数组x和y的构造函数给出了以下错误 错误:无法匹配调用&#39;(向量)(int [4])&#39;。
错误:调用(向量)(int [4])不匹配。将数组赋给指针有一些问题 任何人都可以更正我的代码。
答案 0 :(得分:1)
在您的代码中:
vector<int> v1;
v1(x);//no matching call
^^^^^^
是一个函数调用,但你没有名称v1的函数,你的向量也不会重载operator()。你可能想要:
vector<int> v1(x);
另外,您需要:
v=new datatype[size];
在vector(datatype *ptr)
构造函数的开头。