gpt4 book ai didi

c++使用指针的自定义矩阵模板

转载 作者:行者123 更新时间:2023-11-28 01:04:03 25 4
gpt4 key购买 nike

这是我最近开始实现的矩阵模板。它没有很多功能,因为就像我说的,我刚刚开始使用它。

头文件:

#ifndef MATRIXX_H
#define MATRIXX_H

#include <iostream>
using namespace std;

template <typename theType> class Matrix
{
public:
Matrix()
{
rows = columns = 0;
matrixRoot = new theType *[rows];
for(int i = 0; i < rows; i++)
{
matrixRoot[i] = new theType[columns];
}

}

Matrix(int rows, int columns)
{
matrixRoot = new theType *[rows];
for(int i = 0; i < rows; i++)
{
matrixRoot[i] = new theType[columns];
}
}

~Matrix()
{
delete [] *matrixRoot;
delete [] matrixRoot;
}

int numrows() const
{
return rows;
}

int numcols() const
{
return columns;
}

private:
int rows;
int columns;
theType **matrixRoot;

};

#endif

当我尝试运行这个测试程序时出现问题:

#include "matrixx.h"
#include <iostream>

void TestingMatrix()
{
int r = 5;
int c = 4;
Matrix<int> a(r, c);

cout << "Number of rows: " << a.numrows() << " Number of columns: " << a.numcols() << endl;
}

int main()
{
TestingMatrix();
}

如果它是正确的,我希望输出会产生如下内容:

Number of rows: 5 Number of columns: 4

相反,我得到了一些方式:

Number of rows: 134515193 Number of columns: 2515748

有趣的是,每次运行程序时,列数会发生变化,但行数不会发生变化。

显然,如果我什至不能正确初始化矩阵的一个实例,我将无法到达任何地方,所以我想知道我做错了什么导致了如此错误的结果。顺便说一句,我知道我的析构函数也搞砸了,因为它会导致程序出现段错误(笑),但这是我计划在未来自己解决的问题。如果有人能解释为什么我会得到行和列的数字以及如何让它返回正确的值,我将不胜感激。

谢谢。 (:

最佳答案

Matrix<int> a(r, c);  // Invokes constructor with arguments.

您没有初始化两个参数构造函数中存在的成员变量 rowscolumns。所以从他们的 getter 那里得到一些垃圾值。

Matrix(int rows, int columns) : rows(rows), columns(columns)
// ^^^^^^^^^^^^^^^^^^^^^^^^^ Add this
{
// ....
}

关于c++使用指针的自定义矩阵模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7302888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com