为什么我总是使用默认参数获取对象?

Pat*_*ryk 0 c++ const

我有2个成员函数的问题,其中一个是const返回一个const:

const BoardNode & Board::getBoardNode(unsigned int rowIdx, unsigned int colIdx) const
{
    return _mData[rowIdx*_mNumColumns + colIdx];
}

BoardNode & Board::getBoardNode(unsigned int rowIdx, unsigned int colIdx)
{
    return _mData[rowIdx*_mNumColumns + colIdx];
}
Run Code Online (Sandbox Code Playgroud)

过了一会儿我用的代码:

// where this is a Board holding Nodes in std::vector
BoardNode nodeToAddAsNeighbor   = this->getBoardNode(x1+ x, y1+ y);
Run Code Online (Sandbox Code Playgroud)

无论的值y1,y,x,x1是的,我总是回以坐标中的节点(0,0).

然而,节点的其他参数是不同的,只有如上所述的坐标.

知道为什么吗?

编辑 我的副本构造函数:

BoardNode::BoardNode(const BoardNode & other) :
    _mNodeType(other._mNodeType),
    _coordinates( other._coordinates ),
    _neighboursVector( other._neighboursVector) {}
Run Code Online (Sandbox Code Playgroud)

seh*_*ehe 5

BoardNode nodeToAddAsNeighbor = ....;
Run Code Online (Sandbox Code Playgroud)

调用复制构造函数.它定义了吗?它是如何定义的?也许它不像宣传的那样有效.例如

struct A
{
    int i;
    A(int i)    : i(i)  {}
    A(A const&) : i(42) {}
};
Run Code Online (Sandbox Code Playgroud)

显然有

A a(7);
A b = a;
Run Code Online (Sandbox Code Playgroud)

你不能指望bi包含7,而是包含42