C++ LNK2019链接CPP文件进行测试时出错

C++ LNK2019链接CPP文件进行测试时出错,c++,lnk2019,C++,Lnk2019,我正在尝试编写一个立方类,它对3次多项式执行运算。当尝试重载+运算符以返回新的立方体对象时,会出现LNK2019错误: “未解析外部符号”public:u thiscall Cubic::Cubic(void)”(??0立方@@QAE@XZ)在函数“public:class Cubic const\uu thiscall Cubic::operator+(class Cubic)”中引用(??HCubic@@QAE?BV0@V0@@Z) " 我试着看看我的函数声明是否与我的定义不同,但它们都是相

我正在尝试编写一个立方类,它对3次多项式执行运算。当尝试重载+运算符以返回新的立方体对象时,会出现LNK2019错误:

“未解析外部符号”public:u thiscall Cubic::Cubic(void)”(??0立方@@QAE@XZ)在函数“public:class Cubic const\uu thiscall Cubic::operator+(class Cubic)”中引用(??HCubic@@QAE?BV0@V0@@Z) "

我试着看看我的函数声明是否与我的定义不同,但它们都是相同的。我相信问题出在重载运算符中,因为我尝试使用
rhs修改每个系数。系数[I]+=系数[I]
并返回rhs,效果很好。我之所以想返回一个新的Cubic,是因为它看起来更正确,也因为它更容易实现-运算符

立方.h文件

#包括
使用名称空间std;
类立方
{
公众:
//默认构造函数
立方();
//预定构造器
立方(整数3、整数2、整数1、整数0);
//回归系数
int getCoefficient(int度)const;
//加法运算
常量立方运算符+(立方rhs);
//输出运算符

friend ostream&operator您的问题是
Cubic
类声明了一个默认构造函数,如下所示:

//默认构造函数
立方();
但是您从未定义过该构造函数(至少,在您展示的任何代码中都没有)

您需要内联定义默认构造函数,如下所示:

//默认构造函数
Cubic(){}//这提供了一个定义,但它没有做任何事情。
或在其他地方提供单独的定义:

Cubic::Cubic()
{
//在这里做点什么。。。
}
您还可以将“Do something”代码添加到内联定义中!如果定义很小(一行或两行),大多数编码人员都会这样做,但对于更复杂的代码,请将定义分开

编辑:或者,正如@Scheff在注释中指出的,您可以使用以下方法明确定义默认构造函数:

//默认构造函数
Cubic()=default;//将执行所需的最小构造代码。

您声明但未实现默认构造函数
Cubic::Cubic()
。正如您在
Cubic::operator+()
中使用它一样,链接器查找了实现,并抱怨没有实现。将声明更改为
Cubic()=default;
可能会修复它。(这里,您指的是编译器的自动生成,它在定义自定义构造函数后立即被抑制。)@Scheff-感谢您的拼写更正!您这样做时,我正在添加我的“编辑”。希望您不介意我加入您的评论。