64,637
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class a
{
public:
a();
virtual void init();
virtual void run();
virtual void EndSet();
};
class b : public a
{
public:
b();
void init();
void run();
void EndSet();
};
#include "a.h"
a::a()
{
cout<<"a构造函数"<<endl;
}
b::b()
{
cout<<"b构造函数"<<endl;
}
void a::init()
{
cout<<"a.Init"<<endl;
}
void a::run()
{
cout<<"a.run"<<endl;
}
void a::EndSet()
{
cout<<"a.endset"<<endl;
}
void b::init()
{
cout<<"b.Init"<<endl;
}
void b::run()
{
cout<<"b.run"<<endl;
}
void b::EndSet()
{
cout<<"b.endset"<<endl;
}
#include "a.h"
void main()
{
a sta;
sta.init();
sta.run();
sta.EndSet();
system("pause");
}
extern "C" CStrategy __declspec(dllexport) *GetStr();
class __declspec(dllexport) CADX_RSI_IF_5Min :
public CStrategy
{
public:
CADX_RSI_IF_5Min(void);
~CADX_RSI_IF_5Min(void);
ST_WORD Run();
};
CStrategy* GetStr()
{
return (CStrategy*)(new CADX_RSI_IF_5Min());
}
#ifdef STRATEGY
//策略实现
#define BEGINDEC0(strat_name) extern "C" CStrategy __declspec(dllexport) *GetStr();\
class __declspec(dllexport) strat_name : public CStrategy{ \
public: //都定义为公有方法与成员
#define BEGIN_DEC BEGINDEC0(STRATEGY) //开始策略类声明
#define ENDDEC0(strat_name) ST_WORD Run();}; \
CStrategy* GetStr() \
{ \
return (CStrategy*)(new strat_name##());\
}
#define END_DEC ENDDEC0(STRATEGY) //结束策略类声明
#define CONSTRUCTOR_DEC STRATEGY(void); //声明构造函数
#define BEGIN_CONS STRATEGY::STRATEGY(void){ //开始构造函数
#define END_CONS } //结束构造函数
#define DESTRUCTOR_DEC ~STRATEGY(void); //声明析构函数
#define BEGIN_DES STRATEGY::~STRATEGY(void){ //开始析构函数
#define END_DES } //结束析构函数
#define ONORDER_DEC ST_WORD OnOrder(CThostFtdcOrderField * pOrder); //声明OnOrder回调函数
#define BEGIN_ONORDER ST_WORD STRATEGY::OnOrder(CThostFtdcOrderField * pOrder){ //开始OnOrder回调函数
#define END_ONORDER return OK;} //结束OnOrder回调函数
#define ONTRADE_DEC ST_WORD OnTrade(CThostFtdcTradeField * pTrade); //声明OnTrade回调函数
#define BEGIN_ONTRADE ST_WORD STRATEGY::OnTrade(CThostFtdcTradeField * pTrade){ //开始OnTrade回调函数
#define END_ONTRADE return OK;} //结束OnTrade回调函数
#define BEGINRUN0(strat_name) ST_WORD strat_name::Run(){
#define BEGIN_RUN BEGINRUN0(STRATEGY) //开始策略主体
#define END_RUN return OK;} //结束策略主体
#endif
我看到一个类似的解决问题的,但我看不懂那个在基类里面的定义方法。。
#include "a.h"
void main()
{
a *sta = new b();
sta->init();
sta->run();
sta->EndSet();
system("pause");
}