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 に答える