//#include <iostream>template<typename T>
class A{
public:
typedefvoid (*callback)(T&); //class namespace for function pointer type
callback f_ptr;
T data;
};
template<typename T>
class B{
public:
typedefvoid (*callback)(T&); //class namespace for function pointer type
callback f_ptr;
};
template<typename T>
void func(T& value){
++value;
}
voidOnStart(){
//int main(){
A<int> a;
B<int> b;
a.f_ptr = func<int>; // automatic code generation of templates functions
b.f_ptr = a.f_ptr; // assignment operation for function pointers with the same function signatures and different function pointer types.int x = 1;
b.f_ptr(x);
printf("%d\r\n", x); //2printf("%d\r\n", b.f_ptr == a.f_ptr); //1 // equal operation for function pointers with the same function signatures and different function pointer types.
}
#property strictvoid Func( int &[] ) {}
void Func( int &[][2] ) {} // 'Func' - function already defined and has bodyvoidOnStart()
{
int Array1[];
int Array2[][2];
Func(Array1);
Func(Array2); // 'Array2' - invalid array access
}
你如何在使用模板和void*之间做出选择?
没有什么特别的方法,这只是一个直觉的问题
#(未在MT5(build 2060)中修复)"在typedef中重复使用相同的函数签名时出现编译错误"。
#(未在MT5(build 2060)中修复)"当使用typedef时,使用具有明确专业化的模板函数不会为该模板函数生成代码"。
鉴于命名空间的实施尚未完成,请考虑在下一个C++ 中实现对这一行为 的支持,作为缺陷修复的一部分。
嗨!请注意该主题
https://www.mql5.com/ru/forum/314275
简而言之,测试器计算出的保证金与符号设置中的保证金不一致关于交易、自动交易系统和策略测试的论坛
新版本的MetaTrader 4 build 1170平台
fxsaber, 2019.05.28 12:10
这是不是MT4编译器的一个错误?在MT5中没有这方面的问题。在MT4中,没有办法对函数进行过载。
在MT 4中的轻微失误在MT 5中没有检查...
关于交易、自动交易系统和策略测试的论坛
新版本的MetaTrader 4 build 1170平台
fxsaber, 2019.05.28 14:24
抓住了MT4和MT5之间一个不熟悉的差异。这是不是MT4的一个错误?五是对静力学做了适当的初始化。在第一次访问时。
有四个人没有。而且不知道我们什么时候会这样。
build 2062:创建自定义符号时出错5305。
在2060年,一切都很好。
我记得在MT4中,有一个命令行键/skipupdate
在MT5中是否有类似的东西?我怎样才能禁用更新?
fxsaber:
MT4被称为,MT5不被称为。
看来你用的是旧的编译器,用现代的编译器(随MT5来的)编译,一切都会好的。
汇编到1966年。在MT4中尝试了2062 - 工作正常。谢谢你!
遗憾的是,没有办法击败这个。