没有匹配的函数调用奇怪的错误
Posted
技术标签:
【中文标题】没有匹配的函数调用奇怪的错误【英文标题】:No matching function call Strange error 【发布时间】:2015-11-29 10:16:11 【问题描述】: #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 的构造函数给了我以下错误。 错误:对“(向量)(int [4])”的调用不匹配。 错误:对 (vector) (int [4]) 的调用不匹配。将数组分配给指针时存在一些问题。 谁能更正我的代码。
【问题讨论】:
【参考方案1】:在您的代码中:
vector<int> v1;
v1(x);//no matching call
^^^^^^
是一个函数调用,但您没有名称为 v1 的函数,而且您的向量也没有重载 operator()。你可能想要:
vector<int> v1(x);
另外,你需要:
v=new datatype[size];
在vector(datatype *ptr)
构造函数的开头。
【讨论】:
我试过vector以上是关于没有匹配的函数调用奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章