我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 哪位大人帮我看看这个程序的阿 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

seast



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
发贴: 2806
威望: 0
浮云: 1585
在线等级:
注册时间: 2006-11-05
最后登陆: 2010-03-12

5come5帮你背单词 [ supper /'sΛpə/ n. 晚餐 ]


哪位大人帮我看看这个程序的阿

帮我看看这个程序哪个地方出错了!
老师说,对象矩阵没有初始化,可是我还是没有明白!谢谢阿

# include <iostream>
# include <cmath>

using namespace std;

class matrix
{
public :
    matrix (int dims);
    ~matrix();
    setmatrix(double *a);
    printM();
private:
    int index;
    double *matrixA;
};

matrix ::matrix(int dims)
{
    int index =dims;
    matrixA = new double[index * index];
}

matrix ::~matrix()
{
    delete [] matrixA;
}

matrix ::setmatrix (double *a )
{
    for (int i=0; i< index * index ; i++)
            *(matrixA + i) =  a [ i ];
}

matrix ::printM()
{
    cout << " the  matrix is "  << endl ;
    for (int i=0;i<index ;i++)
        for (int j=0;j < index ;j++)
            cout << * (matrixA + i* index +j)  << " " ;
            cout << endl ;
}


void main ()

    matrix matrix1(2);
    double a[]= {1.0, 2.0, 3.0, 4.0 } ;
    matrix1.setmatrix(a);
    matrix1.printM ( );
}


[ 此帖被seast在2007-11-30 16:48重新编辑 ]
顶端 Posted: 2007-11-30 15:59 | [楼 主]
卡西莫多





性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 80
威望: 0
浮云: 1133
在线等级:
注册时间: 2005-11-13
最后登陆: 2008-04-11

5come5帮你背单词 [ image /'imid3ə/ n. 像,形象,影像,图像 ]


matrix ::matrix(int dims)
{
    int index =dims;
    matrixA = new double[index * index];
}

这个复制构造函数用于创建一个 index*index 个元素的一维数组,然后martixA用于指向这个数组 所以matrix matrix1(2) 就是创建了一个matrix类的对象,并使用上面提到的复制构造函数创建一个 2*2=4个元素的数组,martixA指向这个数组,但数组里边值为空;
很显然 matrix ::setmatrix (double *a )
{
    for (int i=0; i< index * index ; i++)
            *(matrixA + i) =  a;
}
就是想数组里边不断放值了
那么matrix ::printM()函数的功能就不用说了

上面只是个人的分析,如果有错,欢迎指出哈
顶端 Posted: 2007-11-30 16:34 | [1 楼]
卡西莫多





性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 80
威望: 0
浮云: 1133
在线等级:
注册时间: 2005-11-13
最后登陆: 2008-04-11

5come5帮你背单词 [ presence /'prezns/ n. 出席,到场,存在 ]


Quote:
引用第5楼seast于2007-11-30 16:38发表的  :

恩 ,不过我是想知道这个程序哪个地方出错了!

这个函数会出错??我到觉得这句有点问题:*(matrixA + i) =  a;
a是个数组指针,怎么把指针放到*(matrixA + i)里边呢??是不是??
顶端 Posted: 2007-11-30 16:41 | [2 楼]
卡西莫多





性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 80
威望: 0
浮云: 1133
在线等级:
注册时间: 2005-11-13
最后登陆: 2008-04-11

5come5帮你背单词 [ argument /'a:gju:mənt/ n. 争论,辩论,论点,论据 ]


matrix1.printM;

应该是这样的吧:matrix1.printM();
顶端 Posted: 2007-11-30 16:46 | [3 楼]
卡西莫多





性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 80
威望: 0
浮云: 1133
在线等级:
注册时间: 2005-11-13
最后登陆: 2008-04-11

5come5帮你背单词 [ glitter /'glitə/ vi. 一闪一闪地发光;n. 闪光,光辉,灿烂 ]


你单步调试试一下,看具体错在那一个过程;
如果报错说是什么无法引用的外部符号,那就很有可能你没把一些头文件包括进来,比如说用到NEW函数,是否需要包括一个头文件(我不确定哈,但你可以找找看)??
顶端 Posted: 2007-11-30 16:53 | [4 楼]
卡西莫多





性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 80
威望: 0
浮云: 1133
在线等级:
注册时间: 2005-11-13
最后登陆: 2008-04-11

5come5帮你背单词 [ acceptance /ək'septəns/ n. 接受,承认,认可 ]


Quote:
引用第10楼yunyue于2007-11-30 16:51发表的  :
//修改后没问题了
# include <iostream>
# include <cmath>

using namespace std;
.......

呵呵,还是实践比说的解决问题要快哈
顶端 Posted: 2007-11-30 16:56 | [5 楼]
卡西莫多





性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 80
威望: 0
浮云: 1133
在线等级:
注册时间: 2005-11-13
最后登陆: 2008-04-11

5come5帮你背单词 [ success /sək'ses/ n. 成功,成就,胜利 ]


Quote:
引用第15楼seekts于2007-11-30 16:56发表的  :


去掉INT就可以了,是什么原因?

index 是个私有成员,你能通过类里的公共成员函数访问其“值”,但给私有成员再重新声明其类型,我估计编译器会阻止试图改变私有成员的类型的行为。猜的
顶端 Posted: 2007-11-30 17:03 | [6 楼]
卡西莫多





性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 80
威望: 0
浮云: 1133
在线等级:
注册时间: 2005-11-13
最后登陆: 2008-04-11

5come5帮你背单词 [ hurt /hə:t/ v. 使受伤,弄痛,伤…的感情,危害,损害;vi. 痛,受痛苦;n. 伤害 ]


Quote:
引用第19楼yunyue于2007-11-30 17:01发表的  :
int index = dims;
这样的话,index就是局部变量

非常有道理!严重同意
顶端 Posted: 2007-11-30 17:05 | [7 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.033165(s) query 6, Time now is:11-22 15:55, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号