当我创建实现基类的虚函数的子类的对象时,出现此错误。
而我的代码是
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(){};
};
// child 类1
class ConsumerOrder:public Order{
private:
float SALES_TAX_RATE;
public:
string CustomerName;
float SalesTax;
void calcTotals() override;
string ToString();
};
// child 类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/