-2

次のソースのコンパイルで問題が発生しました。

    QString code = this->viewManager()->activeView()->document()->text();
    Qualifier qua;
    qua.setQCode(code);

それは私にそれを教えてくれます

error: undefined reference to `Qualifier::setQCode(QString)'

qualifier.hと.cppのコードは次のとおりです

#ifndef __QUALIFIER_H__
#define __QUALIFIER_H__

#include <iostream>
#include <string>
#include <QString>
#include <queue>
#include "analyser.h"



using namespace std;



class Qualifier
{

private:

    string code;
    queue<method> tokenisedCode;
    //queue<analysis> analysedCode;

void tokeniseCode();

public :


void setCode(string code);

void setQCode(QString code);

void computeLocAnalysis();

void computeCCAnalysis();

void visualiseResults();


};

 #endif /* __QUALIFIER_H__ */

CPPは

#include "qualifier.h"

using namespace std;


void Qualifier::tokeniseCode()
{

Parser par;
par.setCode(code);
par.parse();
this->tokenisedCode = par.getMethods();

}

void Qualifier::setCode(string code)
{
    this->code = code;
}

void Qualifier::setQCode(QString code)
{
this->code = qPrintable(code);
}

void Qualifier::computeLocAnalysis()
{

std::cout << this->code << std::endl;

/*
locAnalyser ana = new locAnalyser();
ana.setMethodList(tokenisedCode);
ana.computeResult();
this->analysedCode = ana.getResult();
*/
 }

void Qualifier::computeCCAnalysis()
{

// To be implemented;

 }

void Qualifier::visualiseResults()
{
/*
//Need a grapher of the results
while(!analysedCode.empty())
{
    analysis meth = analysedCode.front();
    cout << "LOC: " << meth.result << "\t\t" << meth.name << endl;
    analysedCode.pop();
    cout << "------------------------------------" << endl;
}
*/
}

なぜ参照が表示されないのかわかりません!つまり、プロジェクトの残りの部分で行われているのとまったく同じ方法です。

4

4 に答える 4

6

ヘッダーファイルによると、同様の機能の2つの異なる実装があります。

void setCode(string code);

void setQCode(QString code);

ただし、.cppでは、最初の実装のみを行います。

void Qualifier::setCode(string code)
{
    this->code = code;
}

したがって、コンパイラはの欠落について文句を言いsetQCode()ます。

解決策:実装するか、ヘッダーファイルからその定義を削除します。

于 2012-05-09T13:06:29.033 に答える
0

.cppファイルにQualifier::setQCode(QString)の実装が表示されていません。

実装cppファイルの引数がヘッダーファイルのプロトタイプの引数と一致していない可能性があります。

于 2012-05-09T13:07:37.660 に答える
0

あなたは2つの機能を持っています

void setCode(string code);

void setQCode(QString code);

setQCodeの実装を忘れてしまいましたか?

于 2012-05-09T13:07:51.997 に答える
0

これはリンカーによって報告されていますね。「修飾子」クラスの定義を含む特定の翻訳単位またはライブラリがリンク プロセスに含まれていないようです。

于 2012-05-09T13:52:42.043 に答える