我是C ++的新手,目前正在尝试从类中实现2D矩阵,这是我当前的代码,现在我无法创建矩阵对象的实例,请给我反馈我需要解决的问题。

*更新:我已经修复了一些代码,但是矩阵不打印任何内容

#include <iostream>
#include <cstdlib>
using namespace std;

class Matrix
{
    public:
        Matrix(); //Default constructor
        Matrix(int *row, int *col); //Main constructor
        void setVal(int row, int col, int val); //Method to set the val of [i,j]th-entry
        void printMatrix(); //Method to display the matrix
        ~Matrix(); //Destructor

    private:
        int row, col;
        double **matrix; 

        //allocate the array
        void allocArray()
        {
            matrix = new double *[*row];
            for (int count = 0; count < *row; count++)
                *(matrix + count) = new double[*col];
        }
};

//Default constructor
Matrix::Matrix() : Matrix(0,0) {}

//Main construcor
Matrix::Matrix(int *row, int *col)
{   
    allocArray();
    for (int i=0; i < *row; i++)
    {
        for (int j=0; j < *col; j++)
        {
            *(*(matrix + i) + j) = 0;
        }
    }
}

//destructor
Matrix::~Matrix()
{
    for( int i = 0 ; i < row ; i++ )
        delete [] *(matrix + i) ;
    delete [] matrix;
}

//SetVal function
void Matrix::setVal(int row, int col, int val)
{
    matrix[row][col] = val;
}

//printMatrix function
void Matrix::printMatrix()
{
    for(int i = 0; i < row; i++)
    {
        for(int j = 0; j < col; j++)
            cout << *(*(matrix + i) + j) << "\t";
        cout << endl;
    }
}


int main()
{
    int d1 = 2;
    int d2 = 2;

    //create 4x3 dynamic 2d array
    Matrix object(&d1,&d2);

    object.printMatrix();

    return 0;
}

===============>>#1 票数:2 已采纳

你的线

Matrix object = new int **Matrix(d1,d2);

是错的。 简单使用

Matrix object(d1,d2);

不需要类似Java的语法,实际上在C ++中意味着动态分配: Matrix* object = new Matrix(d1,d2);

===============>>#2 票数:1

代替Matrix object = new int **Matrix(d1,d2); 使用Matrix* object = new Matrix(d1,d2); 同样,您将必须使用object->printMatrix(); 而不是object.printMatrix();

  ask by Casper translate from so

未解决问题?本站智能推荐:

1回复

2D数组中的最后一个空格; 矩阵

除了一项任务,我使整个程序运行和正常运行。 在我的for循环中,当我尝试打印product_matrix数组时,我得到了一个额外的空格(“”),因为我在每次迭代后都添加了一个空格。 我为循环的每个列和行尝试了if else参数,但是我一直没有走运。 在这部分上停留了几个小时,我认为是时
2回复

如何在4 x 4 2d矩阵内正确搜索值?

我正在尝试编写代码,以搜索称为矩阵[4] [4]的4 x 4矩阵。 用户将能够输入自己的值。最后,它向用户询问用户希望搜索的值。 我编写的代码将显示错误消息。 例如,即使矩阵中有22,程序也会说该矩阵不包含22。这是搜索矩阵的循环。 我希望程序显示正确的输出。 如果用户搜索30,
3回复

在C ++中搜索2D网格

请看一下: http : //www.geeksforgeeks.org/search-a-word-in-a-2d-grid-of-characters/ 这是一个C ++程序,它在2D网格中搜索特定的单词。 在代码中,有两个声明: 谁能解释这些吗? 作者说这些是在所有8
3回复

2D阵列(矩阵)中的访问错误

我有一个小问题...我了解什么是EXC_BAD_ACCESS错误,而且我通常知道如何解决该错误,但这使我完全无法正常工作。 我在一个类中拥有所有这些,这是一个方法: 现在,我的另一段代码调用了此方法: 我知道工作对象在working.get_element(i, j);的位置上
2回复

两个2D阵列,两个矩阵,一个文件

我试图弄清楚如何从一个文件读取两个矩阵,然后将它们分配给两个不同的2D数组。 矩阵在文本文件中由换行符分隔。 我设法使第一个成功阅读,但现在我不知道如何阅读第二个。 在我看来,必须考虑并检查将两个矩阵分开的行。 如何获取程序以读取第二个矩阵并将其分配给数组? 矩阵和数组均为4x4。
2回复

获取和设置2D数组对象值(C ++)

我是C ++的新手,2D数组的工作方式使我感到困惑。 我一直在网上阅读并试图了解是什么导致了我的特定问题,但是却一无所获。 根据这个Stack Overflow的答案 ,我应该能够通过以下操作在2D数组中获取一个值: (*myArrayObject)[row][col] ,但它会引发以
1回复

C ++中的通用函数,用于打印通过各种技术创建的2D整数数组

我正在寻找C ++中的函数来打印由C ++允许的各种机制创建的2D整数数组。 请参阅下面我粘贴的代码中的注释,以了解我用于创建2D整数数组的不同技术。 printMatrix()函数应该能够同时打印mat1和mat2。 怎么办呢?
4回复

如何创建大小为40,000的C ++ bool 2D数组?

我想创建一个名为connectionsOf的布尔矩阵,其大小最大为40000。这是我的代码: 但是,当我在具有37000个数字的文件上运行它以填充矩阵时,存在分段错误。 浏览stackoverflow时,我发现这是因为索引号太高而导致堆栈崩溃。 有没有办法使该堆栈成为可能? 例如静
2回复

函数中两个矩阵的误差总和使用二维数组

================================================== ==============================您看到我要在其中使用2d数组添加2个矩阵的程序,而我我还使用函数add(int x[3][3], int y[3][3],int z
2回复

C ++中的矩阵类:一种解释

我目前正在浏览c ++代码的一些旧的大学片段。 那时,另一个类被指派使用双指针和2D数组进行矩阵类。 幸运的是(或事后不幸)我从来没有机会学到这样的东西。 当我们毕业以供将来审查时,我借用了他们的代码。 如果有人可以请向我解释这个片段到底发生了什么: 只是一个旁注,_coef是双