错误、漏洞、问题 - 页 1729

 
fxsaber:

我创建了OBJ_CHART,然后用鼠标在图表的左上角拖动它。在拖动的同时,ObjectDelete被调用,结果是成功的。MT5。

更多。如果我拖动OBJ_CHART并改变其CHART-属性(例如ChartNavigate),那么我就看不到相应的可视化。
 
与本主题无关的评论已移至"如何确定每个子窗口属于哪个指标"。
 
A100:

编译错误。

出现在构建1447中
谢谢你的帖子,传递的参数恒定控制已经被纠正了。

现在两种情况下都会出现编译错误,应该修改代码以避免错误。
template<typename T>
void f1( const T* const & a[] ) {}    << добавлена константность ссылки
class A {};
void f2( const A* const & a[] ) {}    << добавлена константность ссылки
class B {
        void g1() const { f1( a ); } //error: 'f1' - cannot to apply function template
        void g2() const { f2( a ); } //нормально
        A *a[];
};
 
константность ссылки

我没有在任何地方看到这一点。这是标准吗?

 
Ilyas:
现在在这两种情况下都会出现编译错误,为了避免错误,应该改变代码。

请同时检查这个矛盾(这里相反--底部的错误)。

template<typename T>
void f1( const T& a[] ) {}
class A {};
void f2( const A& a[] ) {}
class B {
        void g1() const { f1( a ); } //нормально
        void g2() const { f2( a ); } //error: 'a' - parameter conversion not allowed
        A *a[];
};
 

MQL5是如何使用内存的?

例如,有以下代码。

class Alfa {}
class Beta
  {
private:
   Alfa  *ptr_a;
   Alfa   obj_a;
public:
   Beta(void) { ptr_a = new Alfa(); }
  ~Beta(void) { delete ptr_a; }
   Metod(void) {...}
  }
//---

int OnInit(void) {
   Beta *ptr_obj = new Beta();
   Beta obj;
//---
   return INIT_SUCCEEDED;
}
void OnDeinit(const int reason) {
   delete ptr_obj;
}

据此,"堆 "中的内存被分配ptr_obj 对象,而自动内存将被分配给obj 对象。如果MQL5内存管理器的操作对这些对象来说是明确的。

1.ptr_a 对象的ptr_obj 对象在 "堆 "中被分配内存。

2.自动为对象objobj_a 分配内存

在这些情况下,MQL5内存管理器是如何组织的。

3.对象ptr_obj 的对象obj_a 将位于哪个内存区域?

4.对象obj 的对象ptr_a 将位于哪个内存区域?

 
A100:

也请检查一下这个矛盾(这里是反过来的)。

这是正确的,这里用打字法,T = A *
 
void f( const A* &Array[] );

通过这种转移,可以交换阵列中的元素(和大小),但不可能交换元素本身。对吗?

void f( const A* const &Array[] );

而这里的元素(和大小)也不能互换。这是否正确?

 
fxsaber:

我没有在任何地方看到这一点。这是标准吗?

为了不写:应该有一个指向常量对象 的常量数组的引用
 
fxsaber:

通过这种转移,可以交换阵列中的元素(和大小),但不可能交换元素本身。对吗?

而这里的元素(和大小)也不能互换。这是否正确?

是的,这是对的。