You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MQL5中调用类方法为何编译时出现意外标记错误?

MQL5编译错误解决:'ms' - unexpected token, probably type is missing?

错误原因

你代码里的CMktStruct ms();是函数声明,表示声明一个名为ms、无参数、返回CMktStruct类型的函数,而不是创建CMktStruct类的对象实例。编译器识别到ms是函数,后续调用ms.PrintStruct()时就会报错,因为函数没有PrintStruct成员。

修正方案

把对象声明行改成直接实例化的形式:

CMktStruct ms; // 去掉括号,正确创建类对象

修正后完整代码

struct pricePoint{
   double price;
   datetime time;
public:
   pricePoint(){
      price = 0;
      time = 0;
   }
};

class CMktStruct{
   pricePoint h[2];
   pricePoint l[2];
public:
   CMktStruct(void);
   void PrintStruct(){PrintFormat("HiPrice1=%.5f HiTime1=%i; HiPrice2=%.5f HiTime2=%i: LoPrice1=%.5f LoTime1=%i; LoPrice2=%.5f LoTime2=%i",h[0].price,h[0].time,h[1].price,h[1].time,l[0].price,l[0].time,l[1].price,l[1].time);};
};

CMktStruct::CMktStruct(void){
   l[0].price = DBL_MAX;
   l[1].price = DBL_MAX;  
}

CMktStruct ms; // 修正后的对象实例化
ms.PrintStruct();

预期输出

运行修正后的代码,会输出你预期的内容:

HiPrice1=0.00000 HiTime1=0; HiPrice2=0.00000 HiTime2=0: LoPrice1=1.79769e+308 LoTime1=0; LoPrice2=1.79769e+308 LoTime2=0

这是因为pricePoint的构造函数将price和time默认初始化为0,CMktStruct的构造函数仅把l数组的price设为DBL_MAX,h数组元素保持默认初始化值。

内容的提问来源于stack exchange,提问作者Andy Thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:37:12