【问题标题】:Problem creating an array of objects C++创建对象数组C++的问题
【发布时间】:2010-05-04 16:28:32
【问题描述】:

我有一个类,我想创建一个包含数字实例的数组,特别是一个矩阵类:

class Matrix {    
public:
    Matrix(int sizeX, int sizeY);
    Matrix();
    ~Matrix();
    ....//omiting the rest here
private:
    int dx, dy;
    float **p
    void allocArrays() {
        assert(dx>0);
        assert(dy>0);
        p = new float*[dx];
        for (int i = 0; i < dx; i++){
            p[i] = new float[dy]; 
        }
    }
};
Matrix::Matrix(int sizeX=1, int sizeY=1)
: dx(sizeX),dy(sizeY)  {
    allocArrays();
    for (int i = 0; i < dx; i++)    {
        for (int j = 0; j < dy; j++) {
            p[i][j] = 0;
        }
    }
}


Matrix::Matrix(const Matrix& m) : dx(m.dx), dy(m.dy) {
    allocArrays();
    for (int i=0; i<dx; ++i) {
        for (int j=0; j<dy; ++j) {
            p[i][j] = m.p[i][j];
        }
    }
}

Matrix::~Matrix() {
    for (int i = 0; i < dx; i++) {
        delete [] p[i]; 
    }
    delete [] p;
    p = 0;
}

我的主要代码是:

int main()
{
    Matrix myArray[2] = { Matrix(6,6)};
    return 0;
}

当我使用 g++ 编译时,出现以下错误:

matrixTesting.cc:在函数“int main()”中: matrixTesting.cc:197:错误:重载“Matrix()”的调用不明确 matrixTesting.cc:11:注意:候选人是:Matrix::Matrix() matrixTesting.cc:44: 注意: Matrix::Matrix(int, int) matrixTesting.cc:197:警告:未使用的变量“myArray”

我在 google 上进行了一些搜索,但没有找到答案。假设我的构造函数有问题。

【问题讨论】:

    标签: c++ arrays matrix compiler-errors


    【解决方案1】:

    您的 Matrix(int, int) 构造函数具有所有可默认参数,这将使其与默认构造函数一样可调用。您应该摆脱默认构造函数,或者使其至少需要 Matrix(int, int) 的一个参数。

    【讨论】:

    • @SB:不能在 C++ 中转发构造函数。
    【解决方案2】:

    float **p之后需要;

    【讨论】:

    • 编辑我的帖子时不小心删除了它!我想复制和粘贴不是我的强项。
    猜你喜欢
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2020-09-20
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多