天天看點

建造者模式遇到的問題

看完部落格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抽象工廠類。

暫時沒想明白為什麼,記錄下來供大家評論。

繼續閱讀