将指向成员对象的指针添加到动态指针数组中

时间:2016-12-07 22:22:19

标签: c++

我有一个类,其中包含一些包含对象和动态指针数组的私有成员,我希望用这些指针填充指向某些成员对象的指针。

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]'

的初始化程序过多

如何解决这个问题?

1 个答案:

答案 0 :(得分: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-termination,但这取决于你想对数组做什么。也许你会把它发送到一个采用旧式数组的API?在这种情况下,您可以使用nex_listen_list.data()来检索嵌入式C风格的数组。