QString方法导致未定义的错误引用

时间:2014-04-04 01:23:12

标签: c++ compiler-errors

#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 namespace语句有关?我不明白这两者是如何联系起来的。如果是这样的话,你能解释一下它为什么会给我一个错误吗?

1 个答案:

答案 0 :(得分: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)

该方法的原型必须在其实现之前包含在内,因此您应该在类声明之后移动它们。