0

可能重复:
在构造具有 const 成员的对象时调用另一个构造函数

我希望后者使用前者。我怎么能在 C++ 中做到这一点?如果不可能,为什么我不能做*this = regMatrix任务?

RegMatrix::RegMatrix(int numRow,int numCol)
{
    int i;
    for(i=0;i<numRow;i++)
    {
        _matrix.push_back(vector<double>(numCol,0));
    }
}

RegMatrix::RegMatrix(const SparseMatrix &sparseMatrix)
{
    RegMatrix regMatrix(sparseMatrix.getNumRow(),sparseMatrix.getNumCol());
    vector<Node> matrix = sparseMatrix.getMatrix();
    cout << "size: " << matrix.size() << endl;
    for(std::vector<Node>::const_iterator it = matrix.begin(); it != matrix.end(); ++it )
    {
        cout << "Position: [" << (*it).i << ", " << (*it).j << "] Value:" << (*it).value << endl;
        regMatrix._matrix[(*it).i][(*it).j] = (*it).value;
    }

    *this = regMatrix;
}
4

1 回答 1

1

您可以使用“委托构造函数”在新的 C++0x 中执行此操作。`

RegMatrix(const SparseMatrix &sparseMatrix) : RegMatrix(sparseMatrix.getNumRow(),sparseMatrix.getNumCol())
{
    vector<Node> matrix = sparseMatrix.getMatrix();
    cout << "size: " << matrix.size() << endl;
    for(std::vector<Node>::const_iterator it = matrix.begin(); it != matrix.end(); ++it )
    {
        cout << "Position: [" << (*it).i << ", " << (*it).j << "] Value:" << (*it).value << endl;
        this->_matrix[(*it).i][(*it).j] = (*it).value;
    }
}

`

于 2013-01-16T03:01:22.793 回答