class C {};
template<typename V>
void process(V value)
{
}
/* если добавить, компилируется
template<typename V>
void process(V& value)
{
}
*/void process(C *ptr)
{
}
voidOnStart()
{
C c;
process(&c); // pointer, ok
process(c); // 'process' - no one of the overloads can be applied to the function call test2.mq5 32 7
}
请提醒我,当你需要单独处理简单类型和指针时,是否有一个整洁的方法来解决 "对重载函数的模糊调用 "的错误,比如这样。
这里,编译器认为(BaseFunctor *)也对应于V。你可以在调用方法时明确指定类型转换,但这很难看。如果你在模板函数中通过引用来获取参数,你不能传递常量和其他临时值(需要一个变量)。
尝试添加一个带有引用的重载
你是指对象引用重载还是指针引用(似乎并不存在)?我不知道如何将一个指向分布式新实例的指针滑入一个对象引用中。
你的周期对于平仓 是不正确的。做一个反向循环。
你的周期对于平仓 是不正确的。做一个反向循环。
我试试,但如果我们寻找的是同一方向的所有盈利头寸,如何循环不重要吗?反正我们会把所有的人都看一遍,并关闭必要的人。
你是指用对象引用或指针引用(似乎不存在)进行重载吗?我不知道如何将一个指向分布式实例的指针滑入一个对象引用中。
有了一个对象参考。
我是这样想的。
与对象有关。
我是这样想的。
还是不那么直接,对不起;-)。该类是用于继承的。
如果你能创建一个BaseFunctor,它就能工作,是的。但事实并非如此。
你好!
谢谢你报告这个错误!
能否请你详细说明一下图片的问题?
目前没有问题
下面的代码输出牖漠摲牥湩潦〉〮र〲थ⸰〰歴沌┰〉〮र。
它应该输出测试的文本
这些文件在Files/Test/\文件夹中。
函数说句柄是正确的,它是1,并且立即GetLastError 说错误5008错误的句柄....。
我应该怎么做?
非常讨厌的MT5(build 2316)错误,阻碍了进一步发展。
你创建了一个内部类型为 "C "的复杂包装对象,但结果却是一个相当不同的数据类型,可能是 "B"、"int",或者是你想要的任何类型...
我花了很多时间和精力才发现并了解到问题不在代码中,而是在MQL编译器中。(C++在线:https://onlinegdb.com/H1R1fR5ML)
据推测,问题出在模板类 "main_wrapper "缓存的工作中,在编译时,来自模板类 "A "的内部类 "internal_wrapper "被传递为不同数据类型(int, B*, B, C)的参数。
第一个数据类型是由模板类 "main_wrapper<A<TEMPLATE_TYPE>::internal_wrapper>"创建的,这样的数据类型将来会在模板的所有对象中进一步使用。
下面将提供另一个关于模板类代码生成的错误。
谢谢你的帖子,已修复
下面的代码输出牖漠摲牥湩潦〉〮र〲थ⸰〰歴沌┰〉〮र。
它应该输出测试的文本
这些文件在Files/Test/\文件夹中。
函数说句柄是正确的,它是1,并且立即GetLastError说错误5008错误的句柄....。
我应该怎么做?
文件的编码是什么?