我有一个Collection
类,它旨在存储不同类型的对象,但是我想调用这些类共享的特定方法名称(例如ToString()
)。如何在MQL中调用未知类的方法?
这里是我的尝试:
class Collection {
public:
void *data[];
void Collection() {}
void ~Collection() {
for (int i = 0; i < ArraySize(data); i++) {
if (CheckPointer(data[i]) == POINTER_DYNAMIC) delete data[i];
}
}
void *Add(void *_object) {
uint _size = ArraySize(data);
ArrayResize(data, _size + 1, 100);
data[_size] = _object;
return _object;
}
string ToString(string _dlm = ",") {
string _out = "";
for (int i = 0; i < ArraySize(data); i++) {
if (CheckPointer(data[i]) == POINTER_DYNAMIC) {
_out += ((void *) data[i]).ToString(); // @fixme: Syntax error.
}
}
return _out;
}
};
但是使用((void *) data[i]).ToString()
语法失败:
'的ToString' - 没有定义Collection.mqh
我怎样才能调用成员函数每个存储对象有一个ToString()
方法?