2014-04-04 49 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中仍然是必需的) –

相关问题