C++ 在以下程序中获取编译链接错误

C++ 在以下程序中获取编译链接错误,c++,header,linker,C++,Header,Linker,我犯了一个错误,我完全不知道为什么。。我已经搜索了这个网站,没有找到任何东西 我的错误是:`LNK2019:未解析的外部符号“public:u thiscall campaign::~campaign(void)”(??1campaign)@@QAE@XZ)在函数“public:u thiscall sale::sale(int,int,int,class agent,class活动)”中引用 这是我的密码: #include "stdafx.h"; #include <iostream&

我犯了一个错误,我完全不知道为什么。。我已经搜索了这个网站,没有找到任何东西

我的错误是:`LNK2019:未解析的外部符号“public:u thiscall campaign::~campaign(void)”(??1campaign)@@QAE@XZ)在函数“public:u thiscall sale::sale(int,int,int,class agent,class活动)”中引用

这是我的密码:

#include "stdafx.h";
#include <iostream>
#include "campaign.h";

//constructor
campaign::campaign()
{
    campaign_name = "Campaign Undefined";
    campaign_id = -1;
    campaign_data_type = 0;
    campaign_region_type = 0;
}

/////////////////////////////
//Accessor Functions      //
///////////////////////////

std::string campaign::getName()
{
    return campaign_name;
}

int campaign::getCampID()
{
    return campaign_id;
}

int campaign::getDataType()
{
    return campaign_data_type;
}

int campaign::getRegionType()
{
    return campaign_region_type;
}

/////////////////////////////
//Mutator Functions       //
///////////////////////////

void campaign::setName(std::string newName)
{
    campaign_name = newName;
}

void campaign::setCampID(int newCampID)
{
    campaign_id = newCampID;
}

void campaign::setDataType(int newDType)
{
    campaign_data_type = newDType;
}

void campaign::setRegionType(int newRType)
{
    campaign_region_type = newRType;
}
#包括“stdafx.h”;
#包括
#包括“campaign.h”;
//建造师
活动::活动()
{
活动\u name=“活动未定义”;
活动标识=-1;
活动数据类型=0;
活动\区域\类型=0;
}
/////////////////////////////
//存取函数//
///////////////////////////
std::string活动::getName()
{
返回活动名称;
}
int活动::getCampID()
{
返回活动标识;
}
int活动::getDataType()
{
返回活动\数据\类型;
}
int活动::getRegionType()
{
返回活动\区域\类型;
}
/////////////////////////////
//变异函数//
///////////////////////////
void活动::setName(std::string newName)
{
活动名称=新名称;
}
无效活动::setCampID(int newCampID)
{
活动id=新营地id;
}
void活动::setDataType(int newDType)
{
活动\数据\类型=新建数据类型;
}
void活动::setRegionType(int newRType)
{
活动\区域\类型=新建类型;
}

很抱歉这篇很长的帖子,如果有人在这里有15分钟的时间,没有更好的事情要做,如果你能仔细检查我的代码,给我一个我做错了什么的线索,我将不胜感激。谢谢:)

您没有实现
campain::~campain()
。因为您在头文件中声明了它,所以应该提供定义。在您的情况下,不需要析构函数,编译器提供的默认析构函数就足够了。因此,从头文件中删除声明。

您已经声明了
活动
析构函数,但没有在任何地方定义它:

class campaign
{
    public:
        campaign();
        ~campaign(); // you need a definition for this

您需要为它提供一个定义(一个实现),或者,如果不需要析构函数做任何特殊的事情,请删除声明,让编译器自动为您提供析构函数。

您不需要为
活动定义析构函数。将其放入您的实现文件中:

campaign::~campaign()
{

}

如果希望类使用默认析构函数,可以删除
~活动(void)

如Nbr44所述,您没有定义
活动::~campaign
析构函数。您在头文件中声明了它,但没有提供定义

您没有实现活动析构函数。
如果它是琐碎的,不要声明它

链接器会清楚地声明未解析的外部符号“public:\u thiscall campaign::~campaign(void)”
,这应该会给你一个线索!你声明~ ~(或)活动析构函数,但你不定义它,我不明白它意味着什么,诚实,抱歉真的哑:(我对这个C++的新东西-给我另一个提示?在战役标头中你声明一个析构函数(战役)但是您没有在实现中定义它。如果您不想编写析构函数,然后从headerHah中删除它的声明,我现在觉得自己很笨……谢谢您的帮助!:)