ошибка классификатора c ++ - PullRequest
       42

ошибка классификатора c ++

1 голос
/ 13 октября 2010

Я начал писать код для библиотеки, которая мне нужна.Следующий код дает мне ошибку

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: ошибка: передача 'const node' в качестве аргумента 'this' для luint node :: getID () 'отбрасывает квалификаторы

Что-то не так с кодом?*

Спасибо,

Ответы [ 3 ]

3 голосов
/ 13 октября 2010

Ваш inNode объявлен как const, что означает, что вы можете вызывать только const функции-члены на нем. Вам нужно добавить модификатор const в getID, чтобы сообщить компилятору, что он не будет изменять объект:

luint getID() const { return this->ID; }
1 голос
/ 13 октября 2010

В вашей функции operator = inNode является константой.Функция getID не является константой, поэтому ее вызов отбрасывает постоянство inNode.Просто сделайте getID const:

luint getID() const { return this->ID; }
0 голосов
/ 13 октября 2010

Вам нужно сделать getID () const.

...