2014-04-04 54 views
0
#include <QCoreApplication> 
#include <vector> 
#include <string> 
#include <vector> 
#include <QString> 
#include <QVector> 
#include <Method.h> 

int main(int argc, char *argv[]) 
{ 

    QVector< QString> vec; 

    QVector< QVector < QString> > mat; 

    vector<string> vect; 

    vector<vector<string> > matr; 




    vec = Method::bogus(vect); 

    mat = Method::bogusMa(matr); 

} 

#include <vector> 
#include <string> 
#include <vector> 
#include <QString> 
#include <QVector> 
#include <Method.h> 

using namespace::std; 

QVector<QString> bogus(vector<string> & vec) 
{ 
    QVector<QString> result; 


    return result; 

} 

QVector<QVector <QString> > bogusMa(vector<vector<string> > & vec) 
{ 

    QVector< QVector<QString> > result; 


    return result; 

} 


#ifndef METHOD_H 
#define METHOD_H 

#include <vector> 
#include <string> 
#include <vector> 
#include <QString> 
#include <QVector> 
#include <Method.h> 

using namespace::std; 

class Method{ 


public: 
    static QVector<QString> bogus(vector<string> & vec); 
    static QVector<QVector <QString> > bogusMa(vector<vector<string> > & vec); 

}; 

#endif // METHOD_H 

這很奇怪,因爲當我返回包含除QString以外的任何其他矢量時,我沒有收到任何錯誤消息。對不起,如果這聽起來像一個愚蠢的問題,但我無法弄清楚爲什麼我得到這個錯誤。它與頭文件中的include命名空間語句有關嗎?我不明白這兩個可能如何連接。如果是這樣,你能解釋爲什麼它給我一個錯誤?QString方法導致未定義的錯誤引用

+0

在我們可以幫助你之前,'這個錯誤!= NULL'必須是'TRUE'。 – MrDuk

+0

你是什麼意思? – user3435009

+0

只是沒有提到你的意思是「這個錯誤」 – MrDuk

回答

1

當實現一個方法,你需要指定類中有

QVector<QString> bogus(vector<string> & vec) 

成爲

QVector<QString> Method::bogus(vector<string> & vec) 

而且

QVector<QVector <QString> > bogusMa(vector<vector<string> > & vec) 

成爲

QVector<QVector <QString> > Method::bogusMa(vector<vector<string> > & vec) 

該方法的原型必須在其實現之前包含,所以你應該在你的類聲明後移動它們。

+0

如果它們不在同一個文件中(我有一個頭文件和一個cpp文件)會怎麼樣? – user3435009

+0

好的,現在可以使用。 – user3435009

+0

在這種情況下,您需要將頭文件包含在cpp文件中,並在主文件中(「Method ::」在cpp中仍然是必需的) –

相關問題