【发布时间】:2019-09-07 20:43:53
【问题描述】:
我想在另一个项目中包含一个项目中的类。
我有一个子目录项目,其中包含两个子项目,一个 windows qt 控制台应用程序和一个用于测试控制台应用程序的自动测试项目。我的控制台应用程序包含一个类,我想将其拉入我的单元测试进行测试:
这是标题:
// calculator.h:
#ifndef CALCULATOR_H
#define CALCULATOR_H
class Calculator{
private:
public:
Calculator(int year);
int getYear(){ return 666; }
int getMonth();
int getDay();
};
#endif
来源:
// calculate.cpp
"#include "calculator.h"
Calculator::Calculator(int year){}
int Calculator::getMonth(){
return 42;
}
int Calculator::getDay(){
return 3333;
}
这是我的单元测试的样子:
//tst_foobar.cpp
#include <QtTest>
//#include "../Calculator/calculator.h"
#include "../Calculator/calculator.cpp"
// add necessary includes here
class Foobar : public QObject
{
Q_OBJECT
private slots:
void test_case1();
};
void Foobar::test_case1()
{
Calculator myCalc(42);
}
QTEST_APPLESS_MAIN(Foobar)
#include "tst_foobar.moc"
我的问题是当我像这样包含另一个子目录的头文件时:#include "../Calculator/calculator.h" 它不能正常工作。我无法测试calculator.cpp 中定义的任何类函数。我可以像这样明确地包含 calculate.cpp #include "../Calculator/calculator.cpp" 并且我的测试按预期工作,但这是正确的方法吗?
我从未见过像这样的文件中包含.cpp 文件,只有标题?但是如果只包含头部,头部不包含calculator.cpp中的函数定义?我的头文件应该包含.cpp 文件吗?这样我就可以只在其他文件中包含标题,就像你在 C++ 中经常看到的那样。 那么为什么 QT Creator 生成的类会反其道而行之呢?创建一个头文件和一个.cpp文件,.cpp文件是包含头文件的那个??
对 C++ 编程非常陌生,有点困惑。非常感谢详细的帮助。
【问题讨论】:
-
可能是转录错误,但是...
"#include "calculator.h"不应该有前面的"。
标签: c++ qt qt-creator