gpt4 book ai didi

c++ - 抽象类 c++(错误 LNK 2001 : unresolved external symbol)

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:19 25 4
gpt4 key购买 nike

当我创建一个实现基类虚函数的子类的对象时出现此错误。

error LNK2001: unresolved external symbol "public: virtual void __thiscall CateringOrder::[Order]::calcTotals(void)" (?calcTotals@?QOrder@@CateringOrder@@UAEXXZ)

而我的代码是

class Order
{
private:
float SANDWICH_PRICE;
float TOCOS_PRICE;

public:
string customerType;
int NumberOfSandwiches;
int NumberOfTacos;
float SandwichSubtotal;
float Subtotal;
float TacosSubtotal;
float Total;
int TotalItems;

virtual void calcTotals()=0;

virtual ~Order(){};



};

//子类1

class ConsumerOrder:public Order{
private:
float SALES_TAX_RATE;
public:
string CustomerName;
float SalesTax;
void calcTotals() override;
string ToString();

};

//子类 2

class CateringOrder: public Order
{

public:
string CustomerCode;
float DeliveryFee;
bool PreferredCustomer;
void Order::calcTotals(void) override;
string ToString();

};

//其他类

static class Validation
{
public:
bool CheckCustomerCode();
bool CheckCustomerType();
float CheckDeliveryFee();
int CheckItem();

};

现在,当我创建基类的对象时,编译后显示错误。

bool Validation::CheckCustomerCode()
{
CateringOrder obj;

string tempCode = obj.CustomerCode;

return true;
}

最佳答案

好吧,您得到的链接器错误表明您从未为

提供定义
void CateringOrder::calcTotals(void) {…}

除此之外,写这样的东西:

void Order::calcTotals(void) override;

在类定义中是不合法的 C++。虽然这种非标准语法适用于 Visual C++ 编译器,但仅出于兼容性原因保留它。正确的版本是简单地写

void calcTotals(void) override;

关于c++ - 抽象类 c++(错误 LNK 2001 : unresolved external symbol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52462020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com