订阅合约的函数原型如下
virtual int SubscribeMarketData(char *ppInstrumentID[], int nCount) = 0;
参数定义 char* ppInstrumentID[] = { "rb2410", "sc2407" };
报错:E0144 “const char *” 类型的值不能用于初始化 “char *” 类型的实体
修改配置,依次点击项目->属性->C/C+±>语言->符合模式,将原来的“是”改为“否”。
报错:C1214 模块与通过“/Zc:twoPhase-”请求的非标准行为发生冲突
改成:const char* ppInstrument[] = { "rb2410", "sc2407" };
报错:E0167 “const char **” 类型的实参与 “char **” 类型的形参不兼容
因为函数接受的是char *ppInstrumentID[]
,也就是char **类型, 又不能去修改接口,只能从代码上解决问题。
最后解决:
char* ppInstrument[] = { (char*)"rb2410", (char*)"sc2407" };
或者
const char *strings[] = {"rb2410", "sc2407"};
char **ppInstrument = const_cast<char **>(strings);