#include class OperationCls{ public: virtual int GetResult() = 0; private: int NumberA; int NumberB; };

class OperationPlus : public OperationCls { public: int GetResult(){ return NumberA + NumberB;

  }	

}; class OperationSub : public OperationCls{ public: int GetResult(){ return NumberA - NumberB; }

};

class FactoryOperate{ public: OperationCls * CreateOperate(int type){ switch (type) { case 1: return new OperationPlus; break; case 2: return new OperationSub; break; default: break; } } }; int main(){ FactoryOperate *factory = new FactoryOperate(); std::cout<CreateOperate(1)->GetResult(); std::cout<CreateOperate(2)->GetResult();

}

哪里有错内容:在FactoryOperate类的CreateOperate函数中,switch语句的括号应该是(type),而不是type。修改后的代码如下:

class FactoryOperate{
	public:
		OperationCls * CreateOperate(int type){
			switch (type) {
				case 1:
					return new OperationPlus;
					break;
				case 2:
					return new OperationSub;
					break;
				default:
					break;			
			}	
		}
};
C++ 简单工厂模式示例:实现加减运算

原文地址: https://www.cveoy.top/t/topic/qwwN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录