gpt4 book ai didi

c++ - 指向同一个数组的多个对象

转载 作者:行者123 更新时间:2023-11-28 06:13:18 25 4
gpt4 key购买 nike

我对在 C++ 中使用指针还很陌生,但我会尝试解释我想做什么。

我有一个类对象 Rx(接收器),在我的程序中我将同时使用多个接收器。每个接收器都有一个数据 vector (观察值),为简单起见,我只使用 double vector 。我还有一个 bool 数组,用于确定要使用的观察结果,我希望每个接收器(作为成员变量)都有一个指向该数组的指针。例如, bool 数组中的第一个元素会说“真或假使用你接收到的第一个观察结果”。

此外,在我的代码中,我还想指向一个对象数组,我会遵循相同的过程吗?

int main()
{
// The elements in this array are set in the code before
bool use_observations[100];
// I have chosen 3 for an example but in my actual code I have a vector
// of receivers since the quantity varies
Rx receiver_1, receiver_2, receiver_3;
// I would like to set the pointer in each receiver to point
// to the array use_observations
receiver_1.SetPointer(use_observations);
receiver_2.SetPointer(use_observations);
receiver_3.SetPointer(use_observations);
} // end of main()

我的接收器类声明和定义:

class Rx{
public:
Rx(); // Constructor
Rx(const Rx& in_Rx); // Copy constructor
~Rx(); // Destructor
void SetPointer(bool* in_Array); // Function to set pointer to use_observation
private:
std::vector<double> data;
bool* pointer_to_array[10];
}; // end of class Rx

void Rx::SetPointer(bool* in_Array)`{*pointer_to_array`= in_Array);

这就是我遇到问题的地方,要么它没有正确分配(得到很多空值或没有分配),要么我在 pointer_to_array 上得到一个错误,说表达式必须是一个可修改的值

我没有费心展示构造函数、复制构造函数和析构函数。我知道通常在析构函数中你应该删除指针但是 Rx 不拥有数组中的数据所以我不想删除它。感谢您的帮助

编辑** 我已经展示了一些我正在使用的代码以及我得到的结果,我修改了 SetPointer() 以显示一些结果

int main
{
bool use_observations [6] = {true, true, true, true, true, true};
Rx receiver_1;
receiver_1.SetPointer(use_observations);
}

void Rx::SetPointer(bool* in_Array)
{
*pointer_to_array = in_Array;
for(int i = 0; i < 6; i++)
{
if(*pointer_to_array[i] == true)
std::cout << "Good" << std::endl;
} // end of for loop
} // end of SetPointer()

当我调试并跨过 (*pointer_to_array = in_Array) 时,我得到了结果{true,其余元素为 0xCCCCCCCC},然后在 for 循环的第二次迭代中崩溃,显示“访问冲突读取位置 0xCCCCCCCC

第二次编辑 **感谢大家的帮助。 @PaulMcKenzie 在他的 Rx 实现中(在评论中)指出,我应该使用 bool* pointer_to_array 而不是 bool* pointer_to_array[6] ,这解决了这个问题。同样,我应该指向数组缓冲区的开头,而不是指向数组的指针。

最佳答案

问题是你想要一个指向数组缓冲区开始的指针,而不是指向数组的指针。

class Rx{
public:
void SetPointer(bool* in_Array);
bool* pointer_to_array;
};

void Rx::SetPointer(bool* in_Array) {pointer_to_array = in_Array);

注意删除 *

关于c++ - 指向同一个数组的多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804361/

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