我有一个类,其中包含一些包含对象和动态指针数组的私有成员,我希望用这些指针填充指向某些成员对象的指针。
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]'
的初始化程序过多
如何解决这个问题?
答案 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风格的数组。