将指针添加到成员对象中的指针动态阵列

Add pointer to member object to dynamic array of pointers

本文关键字:指针 动态 阵列 成员对象 添加      更新时间:2023-10-16

我有一个私人成员包含对象的私人成员和一个动态的指针,我想用指针填充某些成员对象。

class NextionTest : public NextionDisplay {
private:
  NexText           lblText =   NexText(0,  1, "t0");
  NexButton       btnPage1  =   NexButton(  0,  2,  "b0");
  NexButton       btnPage0  =   NexButton(  1,  1,  "b0");
  NexTouch *nex_listen_list[] = {    
                &lblText,
                &btnPage0,  
                &btnPage1,
                nullptr 
  };
 /* rest of class not shown */
};

上述代码导致此错误:

'Nextouch* [0]'

的初始化太多

如何解决此问题?

您可以以这种方式初始化数组:

NexTouch* nex_listen_list[4] = {
    &lblText,
    &btnPage0,
    &btnPage1,
    nullptr
};

但是,这定义了固定尺寸的C风格数组,在我看来(从看到"无效终止")看来,您的意图是具有一个动态数组,该数组会成长/收缩,并始终由nullptr与字符串类似。在这种情况下,最好使用std::vector

std::vector<NexTouch*> nex_listen_list = {
    &lblText,
    &btnPage0,
    &btnPage1,
    nullptr
};

很可能不需要nullptr终止,但这取决于您要使用该数组的方法。也许您会将其发送到一些使用旧式数组的API?在这种情况下,您可以使用nex_listen_list.data()检索嵌入式C风格数组。