Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对象初始化过程中发生了什么? MQTT::客户端(mqttNetwork);_C++_Oop_Mqtt - Fatal编程技术网

C++ 对象初始化过程中发生了什么? MQTT::客户端(mqttNetwork);

C++ 对象初始化过程中发生了什么? MQTT::客户端(mqttNetwork);,c++,oop,mqtt,C++,Oop,Mqtt,有谁能解释一下与更传统的客户机(mqttNetwork)相比,这里正在做什么或类似于MQTTNetwork*MQTTNetwork=new MQTTNetwork() 我还试图完成的是将这行代码修改成我可以初始化的东西,类似于MQTTNetwork*MQTTNetwork=new MQTTNetwork()这样我就可以从循环内部为指针分配一个新对象,因为这段代码将用于具有无限循环的嵌入式应用程序中,其中对象需要在循环迭代之间保持不变。,上述方法与指针方法的基本区别在于,指针分配在堆上,而对象客户

有谁能解释一下与更传统的
客户机(mqttNetwork)相比,这里正在做什么或类似于
MQTTNetwork*MQTTNetwork=new MQTTNetwork()


我还试图完成的是将这行代码修改成我可以初始化的东西,类似于
MQTTNetwork*MQTTNetwork=new MQTTNetwork()这样我就可以从循环内部为指针分配一个新对象,因为这段代码将用于具有无限循环的嵌入式应用程序中,其中对象需要在循环迭代之间保持不变。

,上述方法与指针方法的基本区别在于,指针分配在堆上,而对象
客户机
位于堆栈上

如果
client
正在循环中定义和初始化,则每次循环后都会调用析构函数,并且每次都会新创建对象

由于对象需要在循环迭代之间持久化,
client
可能是在循环之外定义的。在这种情况下,您可能需要查找正在使用的库是否提供了
clear()
reset()
函数以及向对象填充新数据的方法。这样,您就可以一直使用同一对象,只需分配新数据


<强>注:< /强>如果您使用指针方法,如果可能的话,我会考虑使用智能指针。< /P> < P>提供第一个问题的答案:<代码> MQTT::客户端客户端(MQTTNET);

在概念上与std::vector number(10)
std::无序映射myMap(otherMap.begin(),otherMap.end())相同


第一部分只是您想要构造的对象的类型,它恰好是一种模板类型(就像
std::vector
),因此需要您详细说明模板参数。

智能指针似乎非常有用,以前从未听说过。无论如何,您能解释一下
MQTT::Client
部分的作用吗?此外,由于我正在尝试做的工作,如果出现某种情况,我需要偶尔从循环中创建一个全新的客户机对象-库没有重置或类似的功能。因此,我希望指针在循环之外定义,这样我就可以给它分配新的对象。我不确定你对模板有多熟悉,但不妨看看(例如,oder)
MQTT::Client
基本上只是定义了一个模板的特定实例化,模板参数是
MQTTNetwork
Countdown
。这就清楚多了!如何使用
客户端(mqttNetwork)
客户端(mqttNetwork)更传统?因为它前面有整个
MQTT::Client
部分,我无法理解它的含义。这就是您要声明的变量的类型,就像
MQTTNetwork*
MQTTNetwork
的类型一样。顺便说一句,你使用指针和手动内存分配的理由是没有意义的。您不需要指针就可以指定新对象。大大简化了,但原则上相同,您也不需要指针来执行类似
inta=3;a=5不需要使用指针的好处,我想我有点累了。无论如何,由于您和KorbenDose的回答,这个问题现在更清楚了。
client(mqttNetwork)将是一个语法错误(除非已经定义了
client
MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);