我在CodeBlocks中有2个项目:
图灵机
MyExp.h
END as UPDATE
MyExp.cpp
class MyExp
{
public:
MyExp() = default;
double myExpFunc(double);
};
第二个项目: TuringMachineTests
的main.cpp
#include "MyExp.h"
double MyExp::myExpFunc(double x) //fixed the lack of MyExp::, but still doesn't work
{
return x*x;
}
Boost东西正常工作(没有调用myExpFunc一切正常)。路径也是正确的(TuringMachineTest的目录在TuringMachine的目录中)。
但是编译器说:
#include "../include/MyExp.h"
#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE( my_test )
{
MyExp me;
int val = me.myExpFunc(5.0);
BOOST_CHECK_EQUAL(val, 24);
}
听起来Tests项目找不到 MyExp.cpp (注意默认ctor被正常调用)。有什么想法吗?
答案 0 :(得分:1)
您在方法实施时忘记了班级名称:
double MyExp::myExpFunc(double x)
// ^^^^^^^
{
...
}
此外,您必须将文件'MyExp.cpp'添加到项目中。该文件必须编译和链接。否则在链接期间会出现错误(对MyExp :: myExpFunc'的未定义引用)。