मेरे पास कई वर्गों के साथ एक क्यूटी अनुप्रयोग है जो सिग्नल और स्लॉट का उपयोग करता है और यह ठीक से संकलित करता है। हालांकि, जब मैं मुख्य CPP (main.cpp) फ़ाइल के अंदर एक कस्टम क्लास बना देता हूं, तो मुझे एक लिंकर त्रुटि मिलती है।क्यूटी सिग्नल/स्लॉट उदाहरण के साथ लिंकर त्रुटि
Error 4 error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall Counter::metaObject(void)const " ([email protected]@@[email protected]@XZ)
Error 5 error LNK2001: unresolved external symbol "public: virtual void * __thiscall Counter::qt_metacast(char const *)" ([email protected]@@[email protected])
Error 6 error LNK2001: unresolved external symbol "public: virtual int __thiscall Counter::qt_metacall(enum QMetaObject::Call,int,void * *)" ([email protected]@@[email protected]@@[email protected])
Error 7 error LNK2019: unresolved external symbol "protected: void __thiscall Counter::valueChanged(int)" ([email protected]@@[email protected]) referenced in function "public: void __thiscall Counter::setValue(int)" ([email protected]@@[email protected])
यह लिंकर त्रुटि नहीं होती है जब मैं एक अलग हेडर फाइल में काउंटर जगह: यहाँ त्रुटियाँ हैं
class Counter : public QObject
{
Q_OBJECT
public:
Counter() { m_value = 0; }
int value() const { return m_value; }
public slots:
void setValue(int value)
{
if(value!=m_value)
{
m_value = value;
qDebug() << "Value " << value;
emit valueChanged(value);
}
}
signals:
void valueChanged(int newValue);
private:
int m_value;
};
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
Counter a, b;
QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));
a.setValue(12); // a.value() == 12, b.value() == 12
b.setValue(48); // a.value() == 12, b.value() == 48
QTimer::singleShot(0, &app, SLOT(quit()));
return app.exec();
}
:
यहाँ कोड मैं का उपयोग करें। इस व्यवहार का कारण क्या है?