注册 登录
编程论坛 C++教室

执行出错,请帮忙看下

心手2012 发布于 2012-06-03 13:00, 847 次点击
程序代码:
#include <iostream>
using namespace std;
const size=3;
template<class T>
class vector
{
    T*v;
public:
    vector()
    {
        v=new T[size];
        for (int i=0;i<size;i++)
            v[i]=0;
    }
    vector(T *a)
    {
        for (int i=0;i<size;i++)
        {
            v[i]=a[i];
        }
    }
    T operator*(vector&y)
    {
        T sum=0;
        for (int i=0;i<size;i++)
        {
            sum+=this->v[i]*y.v[i];
        }
        return sum;
    }
};
int main()
{
   
    int x[size]={1,2,3};
    int y[size]={4,5,6};
    vector<int>v1;
    vector<int>v2;
    v1=x;
    v2=y;
    int r=v1*v2;
    cout<<r<<endl;
    return 0;
}
这是书上的一个例子,编译和组建都没问题,执行时弹出警告。我用VC6.0和VS2008都试过,可结果一样,请大家帮忙解决下!
10 回复
#2
阴天盖顶2012-06-03 13:59
构造函数出错了,v在v1=x前插入断点发现v1.v下面并没有v[0]=0;v[1]=0;v[2]=0;而只有一个值,所以下面v1=x时会报错误,但是具体怎么修改构造函数,就不清楚了。。。

#3
lknight2012-06-03 16:20
第一处:
class vector
{
public:
    T*v;
public:

第二处:
    vector<int>v1;
    vector<int>v2;
    v1.v=x;
    v2.v=y;
#4
心手20122012-06-03 19:28
回复 3楼 lknight
怎么说?
第二处是类型转换啊。。。
#5
ccsuxhw2012-06-03 20:00
#include <iostream>
using namespace std;

const int size = 3;

template<class T>
class vector
{
   
public:
    T *v;
    vector()
    {
        v=new T[size];
        for (int i=0;i<size;i++)
            v[i]=0;
    }
   
    vector(T *a)
    {
        for (int i=0;i<size;i++)
        {
            v[i]=a[i];
        }
    }
   
    T operator*(vector &y)
    {
        T sum=0;
        for (int i=0;i<size;i++)
        {
            sum+=this->v[i]*y.v[i];
        }
        return sum;
    }
};
int main()
{
   
    int x[size]={1,2,3};
    int y[size]={4,5,6};
    vector<int>v1;
    vector<int>v2;
    v1.v=x;
    v2.v=y;
    int r= v1 * v2;
   
    cout<<r<<endl;
 
    system("pause");
    return 0;
}
修改后的代码, 编译通过,你仔细对照啊
#6
lknight2012-06-03 20:38
回复 楼主 心手2012
你要是用C++标准模板库中的vector的话,为啥再自定义一个vector类呢,再说你也没加上vector的头文件啊。在你这个程序里v1是那个你写的类,x是整形数组。。。你觉得这样能直接划等号么
#7
心手20122012-06-03 20:46
回复 6楼 lknight
可以的,建议去看下类型转换,将其它类型转换成类时,就是这么实现的
#8
心手20122012-06-03 20:47
回复 5楼 ccsuxhw
我的编译器没有通过。。。
#9
心手20122012-06-03 20:50
回复 6楼 lknight
这里的vector只是一个普通的类而已,不是STL中的vector
#10
心手20122012-06-03 21:14
回复 6楼 lknight
不好意思,实践证明你是对的,我们书上可能有写错
#11
心手20122012-06-03 21:14
回复 5楼 ccsuxhw
少改了一个,你是对的,谢了
1