Я получаю эту ошибку, когда создаю объект дочернего класса, который реализует виртуальную функцию базового класса.
ошибка LNK2001: неразрешенный внешний символ "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();
};
// другойclass
static class Validation
{
public:
bool CheckCustomerCode();
bool CheckCustomerType();
float CheckDeliveryFee();
int CheckItem();
};
Теперь, когда я создаю объект базового класса, он показывает ошибку после его компиляции.
bool Validation::CheckCustomerCode()
{
CateringOrder obj;
string tempCode = obj.CustomerCode;
return true;
}