से अमान्य रूपांतरण मेरे पास एक बहुत मूर्ख सवाल है (मुझे लगता है)। यह लंबे समय से सी ++ में कोडिंग नहीं कर रहा है, लेकिन मैं इस समस्या को समझ नहीं सकता।सी ++ 'कॉन्स्ट टाइप * कॉन्स' से 'टाइप *'
#include <QList>
class Node {
private:
QList<Node*> _adjacent;
public:
Node();
bool isConnectedTo(Node* n) const;
};
और इस कार्यान्वयन isConnectedTo()
के लिए: मैं इस वर्ग है
bool Node::isConnectedTo(Node* n) const{
return _adjacent.contains(n) && n->_adjacent.contains(this);
}
और मैं return
लाइन में निम्न त्रुटि मिलती है:
Node.cpp: In member function ‘const bool Node::isConnectedTo(Node*) const’:
Node.cpp:25:60: error: invalid conversion from ‘const Node* const’ to ‘Node*’ [-fpermissive]
In file included from /usr/include/qt5/QtCore/QList:1:0,
from Node.hpp:5,
from Node.cpp:1:
/usr/include/qt5/QtCore/qlist.h:913:27: error: initializing argument 1 of ‘bool QList<T>::contains(const T&) const [with T = Node*]’ [-fpermissive]
मुझे लगता है कि, के बाद से विधि स्थिर है, तो this
const Node* const
प्रकार का है। वें क्यूटी दस्तावेज़ पढ़कर, मुझे लगता है कि QList::contains
में bool QList::contains(const T & value) const
है, तो यह ठीक होना चाहिए, है ना? मेरा मतलब है, यह एक const Node*
लेता है, और एक const Node* const
कि का एक विशेष मामला है, इसलिए ... siganture के अंत में const
, यह संकलित ...
धन्यवाद हटाकर!
आप एक सूचक पास कर रहे हैं जहां यह संदर्भ की अपेक्षा करता है। – OMGtechy
@OMGtechy, एक पॉइंटर का संदर्भ है। – chris
'टी टी '' 'टी'' नोड * 'का अर्थ है 'नोड * कॉन्स्ट एंड', नॉन नोड * और'। – chris