gpt4 book ai didi

c++ - 在 C++ 中使用访问器从对象返回数组

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

我是 C++ 的新手,正在尝试自学 C++。我为我的项目编写代码,但在从类的访问器返回数组时遇到困难。

我有一个名为 LoadData 的类,它接受 array_a[]。 LoadData 类构造函数将 array_a 的内存块复制到 arrayA。访问器 getArray() 尝试返回指向 arrayA 的指针。

在 main() 中,我创建了一个对象数组 objVec[obj_i],它收集数据并存储在类中。当我尝试从 LoadData 返回一个数组并打印出内容时,我只正确地得到了数组的第一个元素,其余的似乎返回了内存地址。

我认为我遇到的问题要么是我在访问器中返回数组的方式,要么是我调用 getArray() 的方式。我在使用指针时也遇到了很多麻烦。

我为此苦苦挣扎了大约一个星期,因此我们将不胜感激任何建议和意见!非常感谢你提前。


class LoadData{

private:
float* arrayA;

public:
//constructor
LoadData(float array_a[])

//accessor
float getArray(){return* arrayA}

};

LoadData::LoadData(float array_a[]){
arrayA = new float[sizeOfArray]
memcpy(arrayA, array_a, sizeof(int)*sizeOfArray);
}

int main(){

class LoadData;
int objSize = 6;
LoadData **objVec = new LoadData*[objSize];

obj_i = 0;

//loop to load data
while (...){

objVec[obj_i] = new LoadData(array_a)

}

float *copyArray;
*copyArray = objVec[1]->getArray();
for (int i = 0; i<sizeOfArray; i++){
cout<<*(copyArray + i) <<'\t';
}

//end of main
}

最佳答案

不幸的是,我无法添加到 molbdnilo 的回答中。但简短的回答是他是正确的,你正在返回数组第一个索引的浮点值。这与指向数组第一个索引的指针不同。我确实编写了以下代码,我验证了这些代码显示了他在解释什么。简单地编译它,记住只是输出到控制台以显示值。我希望这个例子能说明他和我在谈论什么。

/***********************
** Include Directives **
***********************/
#include <iostream>
using namespace std;

/**************************
** Function Declarations **
**************************/
float getArray(float* myArray);
float* getArrayPtr(float* myArray);

int main()
{
// MyVar stores return of type float value of array index [0]
float myVar = 0.0f;
// MyVar2 stores return of type float* value of memory address location
float* myVar2 = 0;

float myArray[10] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f,
6.0f, 7.0f, 8.0f, 9.0f, 10.0f};

myVar = getArray(myArray);
myVar2 = getArrayPtr(myArray);

cout << endl;

// This value will be the first array index value
cout << "My Var = " << myVar << endl;

// This value will be the address of the first element of the array
cout << "My Var Ptr = " << myVar2 << endl;

return 0;
}

float getArray(float* myArray)
{
for(int counter = 0; counter < 10; ++counter)
{
cout << myArray[counter] << endl;
}

return* myArray;
}

float* getArrayPtr(float* myArray)
{
return myArray;
}

关于c++ - 在 C++ 中使用访问器从对象返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746259/

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