問候我有一個帶有多載函式的類我不想一次又一次地重新輸入整個內容所以我創建了具有不同引數的函式,請參見下面的示例并且我得到編譯錯誤請幫助考慮下面的代碼片段
class A {
public:
inline A();
inline ~A();
QString insert(QString& id, QString& name, QString& email_id, QString& contact_id, QString& reg_num, Address addr, QUrl& urlToLocalFile );
QString insert(QString& id, QString& name, QString& email_id, QString& contact_id, QString& reg_num, Address addr, QString& pathToLocalFile );
}
inline QString insert(QString& id, QString& name, QString& email_id, QString& contact_id, QString& reg_num, Address addr, QUrl& urlToLocalFile ) {
this->insert(id, name, email_id, contact_id, reg_num, addr, urlToLocalFile.toLocalFile()); // throws error no matching member function for call to insert
}
inline QString insert(QString& id, QString& name, QString& email_id, QString& contact_id, QString& reg_num, Address addr, QString& pathToLocalFile ) {
/*some tasks*/
}
提前致謝。
uj5u.com熱心網友回復:
問題是通過參考呼叫的。
轉換QString&為const QString&完成作業。問題是,我們可能無法擁有string& a = b然后string& c = a實作這一點。我們必須使用指標或常量型別。
根據我的理解,這當然是可行的
class A {
public:
inline A();
inline ~A();
QString insert(const QString& id, const QString& name, const QString& email_id, const QString& contact_id, const QString& reg_num, Address addr, const QString& pathToLocalFile );
QString insert( const QString& id, const QString& name, const QString& email_id, const QString& contact_id, const QString& reg_num, Address addr, const QUrl& urlToLocalFile );
};
inline QString A::insert(const QString &id, const QString &name, const QString &email_id, const QString &contact_id, const QString ®_num, Address addr, const QUrl &urlToLocalFile) {
return this->insert(id,name,email_id,contact_id,reg_num,addr,urlToLocalFile.toLocalFile());
}
inline QString A::insert(const QString &id, const QString &name, const QString &email_id, const QString &contact_id, const QString ®_num, Address addr, const QString &pathToLocalFile) {
}
uj5u.com熱心網友回復:
在類外定義成員函式時,必須在類的范圍內A。這可以使用A::如下所示來完成。
class A {
public:
inline A();
inline ~A();
QString insert(QString& id, QString& name, QString& email_id, QString& contact_id, QString& reg_num, Address addr, QUrl& urlToLocalFile );
QString insert(QString& id, QString& name, QString& email_id, QString& contact_id, QString& reg_num, Address addr, const QString& pathToLocalFile ); //note the const added for the last parameter
}; //added missing semicolon here
//note the A:: used below
inline QString A::insert(QString& id, QString& name, QString& email_id, QString& contact_id, QString& reg_num, Address addr, QUrl& urlToLocalFile ) {
this->insert(id, name, email_id, contact_id, reg_num, addr, urlToLocalFile.toLocalFile());
}
//note the const added in the last parameter
inline QString A::insert(QString& id, QString& name, QString& email_id, QString& contact_id, QString& reg_num, Address addr, const QString& pathToLocalFile ) {
/*some tasks*/
}
此外,您;在類定義后缺少半色。
另外,請注意,我們不能將非常量左值參考系結到右值。所以第二個insert成員函式的最后一個引數應該const QString& pathToLocalFile是QString& pathToLocalFile
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418532.html
標籤:
