我在编译后面的源代码时遇到了问题:
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;
}
*/
}
我不明白为什么没有看到参考!我的意思是,确切的事情,就像在项目的其他部分完成的那样!
答案 0 :(得分:6)
根据头文件,您有两种类似功能的不同实现:
void setCode(string code);
void setQCode(QString code);
但是在.cpp中你只实现第一个:
void Qualifier::setCode(string code)
{
this->code = code;
}
因此,编译器抱怨缺少setQCode()
。
解决方案:实现它或从头文件中删除它的定义。
答案 1 :(得分:0)
您没有告诉我们您在.cpp文件中实现Qualifier :: setQCode(QString)。
也许来自实现cpp文件的参数与头文件中的prototype的参数不匹配。
答案 2 :(得分:0)
你有2个功能
void setCode(string code);
void setQCode(QString code);
您是否忘记实施setQCode ??
答案 3 :(得分:0)
这是由链接器报告的,不是吗?我看起来包含'Qualifier'类定义的特定翻译单元或库不包含在链接过程中。