gpt4 book ai didi

c++ - 将对成员对象的引用添加到指针数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:49 26 4
gpt4 key购买 nike

我有一个类,其中包含一些包含对象的私有(private)成员和一个动态指针数组,我想用指向其中一些成员对象的指针填充。

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,
NULL
];
/* rest of class not shown */
};

上面的代码导致了这个错误:

capture of non-variable 'NextionTest::lblText' &lblText,

我试图将 nex_listen_list 的初始化移动到 init 方法,但这给出了相同的结果。我不知道捕获是什么.. 但似乎我做错了什么。如何解决?

最佳答案

我建议使用 std::vector,它是动态的并且知道它的大小。

class NextionTest : public NextionDisplay {
private:
NexText lblText = NexText(0, 1, "t0");
NexButton btnPage1 = NexButton( 0, 2, "b0");
NexButton btnPage0 = NexButton( 1, 1, "b0");

std::vector<NexTouch*> nex_listen_list = {
&lblText,
&btnPage0,
&btnPage1};
/* rest of class not shown */
};

但是,如果复制或移动此类,则该类的行为会很差。如果我这样做了

NextionTest n1;
auto n2 = n1;

n2.nex_listen_list 将指向 n1 的数据成员,因此您应该删除复制和移动操作

class NextionTest : public NextionDisplay {
NextionTest(const NextionTest&) = delete;
NextionTest& operator=(const NextionTest&) = delete
//...
};

关于c++ - 将对成员对象的引用添加到指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41028038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com