1

必要なライブラリのコードを書き始めました。次のコードは私にエラーを与えます

class node {
public:
    node() { }
    node(const node&);
    ~node() { }

    luint getID() { return this->ID; }
    node& operator=(const node&);
protected:
    luint ID;
    std::vector<node*> neighbors;
};
node::node( const node& inNode) {
    *this = inNode;
}

node& node::operator=(const node& inNode) {
    ID = inNode.getID();
}

これは次のとおりです。

graph.cpp:メンバー関数内'node&node :: operator =(const node&)':graph.cpp:16:エラー:'constnode'を'this'引数として'luintnode :: getID()'に渡すと修飾子が破棄されます

コードに何か問題がありましたか?

ありがとう、

4

3 に答える 3

3

あなたinNodeはであると宣言されています。つまり、あなたはその上でのみメンバー関数をconst呼び出すことができます。オブジェクトを変更しないことをコンパイラに通知するには、修飾子constを追加する必要があります。constgetID

luint getID() const { return this->ID; }
于 2010-10-13T19:50:04.517 に答える
1

operator =関数では、inNodeは定数です。関数getIDは定数ではないため、関数を呼び出すとinNodeの定数が破棄されます。getIDをconstにするだけです:

luint getID() const { return this->ID; }
于 2010-10-13T19:51:36.157 に答える
0

getID()をconstにする必要があります。

于 2010-10-13T19:50:49.917 に答える