我想實現工廠類和接口。但我收到以下錯誤消息。我創建了一個工廠類,它決定返回NormalTaxManager或ImportedTaxManager的類。我使用接口提供了抽象。如何實現工廠模式?
#include<iostream>
#include<vector>
using namespace std;
class TaxInterface
{
public:
virtual int calculate_tax(int price,int quantity)=0;
};
class TaxFactory
{
public:
// Factory Method
static TaxInterface *callManager(int imported)
{
if (imported == 0)
return new NormalTaxManager;
else
return new ImportedTaxManager;
}
};
class NormalTaxManager: public TaxInterface
{
public:
virtual int calculate_tax(int price,int quantity)
{
cout << "NormalTaxManager\n";
price=quantity*price*10/100;
return price;
}
};
class ImportedTaxManager: public TaxInterface
{
public:
virtual int calculate_tax(int price,int quantity)
{
cout << "ImportedTaxManager\n";
price=quantity*price*5/100;
return price;
}
};
int main()
{
TaxFactory f;
TaxInterface *a = f.callManager(1);
a->calculate_tax(100,2);
// int price=TaxInterface::callManager(1)->calculate_tax(100,2);
}
問題:
error: ‘NormalTaxManager’ does not name a type
error: ‘ImportedTaxManager’ does not name a type
這個問題沒有回答。 – skypjack
它爲我工作! – hmims
@skypjack其實我從閱讀中瞭解到,hmims有一種非常好的Factory,顯示的錯誤代碼與循環引用有關。我不是關於工廠模式的一般問題,我認爲hmims同意我的觀點。 –