大话设计模式学习(一)——简单工厂模式
2009-11-14 18:24
260 查看
#pragma once #include <afx.h> #include <iostream> using namespace std; /* * 运算类 */ class MyOperation { public: double NumberA; double NumberB; public: inline virtual double GetResult(){return 0;} }; /* * 加减乘除类 */ class OperationAdd:public MyOperation { inline double GetResult() { double Result=NumberA+NumberB; return Result; } }; class OperationSub:public MyOperation { inline double GetResult() { double Result=NumberA-NumberB; return Result; } }; class OperationMul:public MyOperation { inline double GetResult() { double Result=NumberA*NumberB; return Result; } }; class OperationDiv:public MyOperation { inline double GetResult() { if (NumberB==0) { throw; } double Result=NumberA/NumberB; return Result; } }; /* * 简单运算工厂类 */ class OperationFactory { public: inline static MyOperation* creatOperation(CHAR strOperation) { MyOperation* oper=NULL; switch(strOperation) { case '+': oper =new OperationAdd(); break; case '-': oper =new OperationDiv(); break; case '*': oper =new OperationMul(); break; case '/': oper =new OperationDiv(); break; } return oper; } };
主程序:
void main(int argc,char*argv[]) { MyOperation* oper; char putIn=*argv[2]; oper=OperationFactory::creatOperation(putIn); if(!oper) return; oper->NumberA=atoi(argv[1]); oper->NumberB=atoi(argv[3]); double dResult=oper->GetResult(); cout<<dResult<<endl; }
这里遇见两个问题:
1. 头文件中需包含afx.h头文件才能使用CString类,而如果要使用string,则需包含以下几个头文件
#include <string.h> #include <iostream> using namespace std;
2,在编译时产生了
nafxcwd.lib(afxmem.obj) :error LNK2005:
"void * __cdecl operator new(unsigned int)"(??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj) 的错误,这种错误是设计导致的,使用 MFC 库时,务必先链接它们,然后再链接 CRT 库。解决方法:
通过确保项目中的每个文件都首先包含 Msdev/Mfc/Include/Afx.h 来完成,即首先include Afx头文件。
相关文章推荐
- 大话设计模式-简单工厂模式(学习笔记与java实现)
- 大话设计模式学习--简单工厂模式
- 大话设计模式学习 策略和简单工厂模式结合
- 大话设计模式-简单工厂模式(学习笔记)
- 大话设计模式学习之简单工厂模式与工厂方法模式的学习
- 设计模式学习笔记——简单工厂模式
- 大话设计模式第一讲(简单工厂模式)
- Java设计模式学习记录-简单工厂模式、工厂方法模式
- 大话设计模式学习(十一)——观察者模式
- 设计模式学习--简单工厂模式
- 大话设计模式c++实现1——简单工厂模式 Simple Factory Pattern
- 设计模式学习(1) 简单工厂模式
- 大话设计模式——简单工厂模式
- 设计模式学习笔记一【简单工厂模式】
- 大话设计模式C++版——简单工厂模式
- 简单工厂模式学习博客
- 学习设计模式系列之“简单工厂模式”
- 计算器之简单工厂模式学习笔记[C++版]
- 设计模式学习之策略模式和简单工厂模式的区别和联系
- C#设计模式学习笔记(一) 之 简单工厂模式