MQL5中的OOP问题 - 页 5

 
 
Vladimir Simakov:
来吧!我一直在使用它。

在哪里? 在什么地方,怎么做?

主持人,对不起,我重复了这个问题。我真的想得到一个答案。

 
Artyom Trishkin:

为什么你会故意重新分配一个 传递给函数 的指针?当然,会有泄密事件发生。但这不是一个 "典型的泄漏",而是一个处理对象指针的典型错误。

你不必在这里创建一个新的对象,而是处理外部对象,该对象的指针被传入函数。

这不是我。它取自本线上其他人的代码。它被作为一个例子。
 
Dmitry Fedoseev:

在哪里? 在什么地方,怎么做?

主持人,对不起,我重复了这个问题。我真的想得到一个答案。

要有耐心。我回家后会把它贴出来。
 
Dmitry Fedoseev:

在哪里? 在什么地方,怎么做?

主持人,对不起,我重复了这个问题。我真的想得到一个答案。

如果我对这个问题的理解是正确的,我们用new来声明这个类是一个对象。
然后用一个点来通过创建的对象 调用类的公共方法。
在所有被调用的方法执行完毕后,我们通过删除创建的对象delete来清除内存。

 
Roman:

如果我对这个问题的理解是正确的,我们用new来声明这个类是一个对象。
然后我们通过创建的对象,用点来调用类的公共方法。
在所有被调用的方法执行完毕后,我们通过删除创建的对象delete来清除内存。

不对。起初我以为这是一个像这样的函数参数--对象,但不是通过引用,但最后有一个分号。如果在声明时是正常的对象创建,那么为什么在括号里?所以现在它仍然是世纪之谜。

 
Dmitry Fedoseev:

不对。起初我以为这是一个像这样的函数参数--对象,但不是通过引用,但最后有一个分号。如果在声明时是正常的对象创建,那么为什么在括号里?所以现在它仍然是世纪之谜。

在括号内--因为它是对文本的注释))))
 
Artyom Trishkin:

而你为什么故意将传递给函数的 指针重新赋值?当然,会有泄密事件发生。但这不是一个 "典型的泄漏",而是一个处理对象的指针的典型错误。

你不需要在这里创建一个新的对象,而是处理外部对象的指针,该指针被传入函数。

这不是关于我的例子,而是关于MQL中指针本身的实现--如果你不需要解除引用它们(而且指针可以分配给对象的一个实例!),如果你不传递指针,而是传递对象的引用,https://www.mql5.com/ru/forum/1111/page2471#comment_11796665

这里我们没有关于(CObj& obj)出现的时间和地点的详细信息(&不是一个指针脱引操作,而是获取一个指针GetPointer())

好吧,我不想浪费任何信息......我已经告诉过自己,我在这个论坛上再重复一次--MQL不是C++,它就是这样实现的--好吧,我没有别的选择了

 
Igor Makanu:

这不是关于我的例子,而是关于MQL中指针本身的实现--如果你不需要解除引用它们(而且指针可以分配给对象的一个实例!),如果你不传递指针,而是传递对象的引用,https://www.mql5.com/ru/forum/1111/page2471#comment_11796665

这里我们没有关于(CObj& obj)出现的时间和地点的详细信息(&不是一个指针脱引操作,而是获取一个指针GetPointer())

好吧,我不想浪费任何信息......我已经告诉过自己,我在这个论坛上再重复一次--MQL不是C++,它就是这样实现的--好吧,我没有别的选择了

你太夸张了,没有什么复杂和混乱的问题。

 
Vladimir Simakov:
括号是因为这是一个关于文本的说明))))。

所以,你去那里。

像这样。

void z(CObj * o){
}

甚至不只是可以,而是更好,因为你可以这样称呼它。

CObj obj;
z(GetPointer(obj));

如果你通过引用传递一个指针,你需要另一个变量来存放指针。

***

而如果需要将一个指针传递给一个函数,以便在函数中创建一个对象,这就是它的工作方式。

class CObj{
   public:
   int f(){
      return(33);
   }
};

CObj * obj;

void OnStart(){
  z(obj);
  delete(obj);
}

void z(CObj & o){
   o = new CObj();
}
这基本上是你想知道的关于OOP的所有内容,但却不敢问))