-1
    #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])”的调用不匹配。
错误:对(向量)(int [4])的调用不匹配。将数组分配给指针存在一些问题。
任何人都可以更正我的代码。

4

1 回答 1

1

在您的代码中:

    vector<int> v1;
    v1(x);//no matching call
    ^^^^^^

是一个函数调用,但你没有名称为 v1 的函数,而且你的向量也没有重载 operator()。你可能想要:

    vector<int> v1(x);

此外,您还需要:

v=new datatype[size];

vector(datatype *ptr)构造函数的开头。

于 2015-11-29T10:20:33.607 回答