PLO - 页 8

 

如何在函数参数中返回一个引用?

这种代码会引起问题。

CMy* obj; // global
bool func(CMy* obj)
{
...
  obj = new CMy();
...
}

当试图处理obj时,无效的 指针访问。

试着添加一个&。

bool func(CMy*& obj)

它是有效的。我在文档中没有找到函数参数中的引用返回。

以此类推,我在C++中发现了这个话题:http://stackoverflow.com/questions/5286453/returning-a-pointer-as-a-function-parameter

但**在这里不起作用。*&而不是它?

5.00.630 x64

returning a pointer as a function parameter
returning a pointer as a function parameter
  • stackoverflow.com
Im trying to return the data pointer from the function parameter: bool dosomething(char *data){ int datasize = 100; data = (char *)malloc(datasize); // here data address = 10968998
 
flops:

在文档中没有发现函数参数中的返回引用。

你是说这个。MQL5 参考 / 语言基础知识 / 数据类型 / 参考。修饰词&和关键词this?
 
flops:

如何在函数参数中返回一个引用?

这种代码会引起问题。

当试图处理obj时,无效的指针访问。

试着添加一个&。

它是有效的。我在文档中没有找到函数参数中的引用返回。

以此类推,我在C++中发现了这个话题:http://stackoverflow.com/questions/5286453/returning-a-pointer-as-a-function-parameter

但你的**并不奏效。*&而不是它?

5.00.630 x64

IMHO(那是很久以前的事了)。

你不能通过参数传递一个指针,而是创建一个引用。你不能将一个新的类的实例绑定到一个引用上。那就剩下以下方式了。

CMy* func()
{
...
  CMy* obj;
  obj = new CMy();
  return(obj);
...
}
 
Vigor:

我是OOP的支持者,因为我已经理解了从下往上编程的便利。从对象交互界面到类的实现。

一个接口不就是一个类的外部吗?
 
220Volt:

IMHO(那是很久以前的事了)。

你不能通过参数传递一个指针,你可以创建一个引用。你不能将一个新的类的实例绑定到一个引用上。这就给我们留下了这个选项。

我对这个问题的定义不正确。

通过引用传递一个 指针。我想知道一个人是否可以使用*& 变体,他们不会在进一步的版本中涵盖它吗?在C++中,这样的结构似乎是合法的。

 
Yedelkin:
你指的是它。MQL5参考指南 / 语言基础知识 / 数据类型 / 参考文献。修饰词&和关键词this?

我希望有正确的信息...


在文章中

https://www.mql5.com/ru/docs/basis/function/ParameterPass

你也可以添加有关与对象工作的信息。

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Andrei01:
一个接口不就是类的外部吗?

它对物体有什么区别?这种解释中的接口是一种数据类型,因为它的描述足够清楚地定义了对象的属性。而且,事实上,它定义了物体的外部行为。

在我引用的材料中,反对OOP的人提到,不可能在不实现算法的情况下立即创建类结构,这就是为什么OOP环境中经常实行重构,以及为什么类以其永恒的重新设计阻碍了 开发。而这确实是事实。 当你实施新的东西而不了解它能导致什么时,你必须重做课程,而且不止一次。

创建一个好的类架构是初学者的一个绊脚石。从本质上讲,OOP编程的意义在于编写你自己的"语言",这种语言在未来可以很容易和快速地创建。界面是一种语言的本质,它是为任务而设计的。事实上,接口不能被理解为类的 "类型 "结构,作为类的契约,必须在代码中执行(在MQL中,它并不存在,接口的作用可以由虚拟方法勉强执行)。

例如,你可以为创建新的EA创造一种 "语言",使你能够在几行中从对象中组合出EA的总体方案。信号和条件可以使用现成的,或者你可以开发自己的信号类,通过类比创建自己的库。这种可能性是由MQL5 Wizard 提供的。

通常情况下,应用程序的方案已经开发完毕,"OOP编程 "基本上归结为使用现有的类,并在有限的自由度下编写自己的功能--这很方便。这就是为什么框架如此受欢迎。在开发应用架构时,它们消除了不必要的问题和麻烦。 事实上,自己编写的东西就是创建一个框架类的继承类,并在其中编写某些后台方法的实现,这些方法已经内置于整个应用逻辑中(例如OnInit、OnTick)。

 
Vigor:

...

创建一个合格的类架构是初学者的一个绊脚石。从本质上讲,OOP编程的意义在于编写你自己的"语言",这种语言在以后的创作中很方便、很快捷。界面是一种语言的本质,它是为任务而设计的。接口不应该被理解为类的 "类型 "的构造,作为类的契约,必须在代码中执行(在MQL中,它不存在,接口的作用可以通过虚拟方法来验证)。

...

OOP的意义在于编写你自己的架构。一旦我们有了一个明确的、清晰的和直观的架构,一切都会水到渠成,项目 的复杂性和数量都不会成为制约因素。然而,为了实现这个非常清晰的架构,你必须一个一个地重写类,以接近这个最初模糊的理想。
 
C-4:
相反,OOP的意义在于编写你自己的架构。只要我们有一个清晰、简明、直观的架构,一切都会水到渠成,项目的复杂性和范围都不再是制约因素。然而,为了实现这个非常清晰的架构,你必须一个一个地重写类,以接近这个最初模糊的理想。
+1
原因: