#pragma once #pragma once #include "Settings.h" #include "SMBios.h" #include #include "Hardware.h" #include "IComputer.h" #include "dll_macro.h" class Visitor; struct innerComputerInterface; /** * 虽然以I打头,但只是为了和C#类保持一致,本身不是抽象类 * 不应该被手动实例化,只可以从别的类中获取 */ class DLL_API IComputer { public: //的确你是找不到这个innerComputerInterface的实现的,要是你能找到就该报错了。 //不应该被手动实例化,只可以从别的类中获取 IComputer(std::shared_ptr inner); virtual bool operator==(const IComputer& other) const; bool isNull() const; virtual ~IComputer(); virtual std::vector getHardware(); virtual bool isBatteryEnabled(); virtual bool isControllerEnabled(); virtual bool isCpuEnabled(); virtual bool isGpuEnabled(); virtual bool isMemoryEnabled(); virtual bool isMotherboardEnabled(); virtual bool isNetworkEnabled(); virtual bool isPsuEnabled(); virtual bool isStorageEnabled(); virtual std::string GetReport(); virtual void Accept(Visitor* visitor); virtual void Traverse(Visitor* visitor); protected: std::shared_ptr inner; //不应在外部访问inner变量,getter和setter的作用是方便定义了同名变量的派生类访问 void setIComputerInner(std::shared_ptr inner) { this->inner = inner; } std::shared_ptr getIComputerInner() const { return inner; } };