看完部落格https://blog.csdn.net/liang19890820/article/details/66968761後,自己實作了一遍。
與原部落格的差別是 将名稱Builder改為了Factory。
在定義IFactory這個虛基類時,對于要不要添加構造函數,添加純虛構造函數還是普通構造函數産生了疑問。暫時添加了普通的構造函數。代碼如下:
#ifndef IFACTORY_H
#define IFACTORY_H
#include<icomputer.h>
class IFactory
{
public:
IFactory(); //是否該有構造函數,是否為虛函數,是否為純虛函數。
virtual void createMotherboard() = 0;
virtual void createRom() = 0;
virtual void createHarddisk() = 0;
virtual IComputer* getproduct() = 0;
};
#endif // IFACTORY_H
運作發現有兩處報錯,分别在 ThinkpadFactory.cpp 和 YugaFactory.cpp,報錯為:undefined reference to IFactory::IFactory()。随後将ifactory.h中的構造函數注視掉,程式正常運作。
ThinkpadFactory 和 YugaFactory兩個工廠類繼承了IFactory抽象工廠類。
暫時沒想明白為什麼,記錄下來供大家評論。