以前有可能吗?
我将在晚上与C++一起检查这个公告
Vladimir Simakov:
以前有可能吗?
以前有可能吗?
是的,我特别在旧版本(1554)上检查了它 - 一切正常。
我今晚会用C++中的这种公告来检查它。
Alexey Navoykov:
请举出一个使用这种结构的例子。
fxsaber:
请举例说明如何使用这一结构。
最微不足道的例子是一个数组类。 在这种情况下,它被用来存储任何指针。
template<typename T> class CArray { T _data[]; public: T operator[](int i) const { return _data[i]; } int Size() const { return ArraySize(_data); } // и т.д. }; СArray<void*> pointers;
Alexey Navoykov:
最微不足道的例子是数组类。 在这种情况下,它被用来存储任何指针。
那么如何使用它呢?
class A { public: void OnInit() { Print(__FUNCSIG__); } }; class B { public: void OnInit() { Print(__FUNCSIG__); } }; void OnStart() { void* Pointers[2]; A a; B b; Pointers[0] = &a; Pointers[1] = &b; for (int i = 0; i < ArraySize(Pointers); i++) Pointers[i].OnInit(); // 'OnInit' - member function not defined }
Alexey Navoykov:
铸成你最初放在那里的类型(或通过dynamic_cast检查)。
铸成你最初放在那里的类型(或通过dynamic_cast检查)。
// (A*)Pointers[i].OnInit(); ((A*)Pointers[i]).OnInit();
这只是关于括号是否有必要/无必要的问题...有了这个铸造,在上面的脚本中,执行起来就会很扫兴。也就是说,你需要知道数组指针元素所指向的类的名称。
我不明白那有什么方便。
MQ只在一个地方使用void*。
typedef string(*DoubleToStringFunction)(double,void*);
Alexey Navoykov:
这使得他们的容器无法用于自己的类和不从其类继承的接口,即不是一个通用的解决方案。
也许这是因为在他们的库被创建时,MQL中还没有void*。
不幸的是,我还没有看到它的使用实例。
编译器错误。 Bild 1961,64位。