gpt4 book ai didi

c++ - 无法弄清楚如何将结构数组传递给函数

转载 作者:行者123 更新时间:2023-11-30 03:19:38 26 4
gpt4 key购买 nike

我有一个头文件、主 cpp 文件和函数文件,我正在尝试将 stuct 数组从主函数传递到函数文件,但无法弄清楚语法。我已经剥离了完成的代码以显示我在做什么,而没有显示数百行代码。

我已经尝试了我所知道的所有变体来传递结构数组,但它无法编译;我已经阅读了我能找到的所有内容,但找不到解决方案;我知道这只是我没有搞清楚的语法问题。

header.h文件

#ifndef myHeader_h
#define myHeader_h


#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <sstream>


using namespace std;


struct MyStruct
{
float var1;
float var2;
float var3;
};

struct MyStruct2
{
string var4;
string var5;
bool var6;
MyStruct struct1;
};


int enterFunction(int maxNumber, int & currentNumber, structList);

#endif

主程序

#include "myHeader.h"

int main()
{
int currentNumber = 0, maxNumber = 0;

MyStruct *structList;
structList = new MyStuct[maxNumber];

enterFunction(currentNumber, maxNumber, structList);
return 0;
}

函数文件

#include "myHeader.h"

int enterFunction(int maxNumber, int & currentNumber, structList)
{
// DO MORE STUFF HERE
}

最佳答案

您应该使用 RAII 而不是容易出错的手动内存管理来管理资源。 C++为此提供了std::vector,它让生活变得更轻松。我猜函数 enterFunction 应该从文件或键盘中读取一些结构,因此任务是创建一个输入值列表。您可以传递对 vector 的引用:

int enterFunction(int maxNumber, int & currentNumber, std::vector<MyStruct2>& structlist);

但是,我会更改签名以返回包含输入值的 vector 。这使得函数更容易理解和推理:

std::vector<MyStruct2> enterFunction(int maxNumber) {
std::vector<MyStruct2> inputs;
// let's assume that >> is overloaded for MyStruct2
while (inputs.size() < maxNumber) {
MyStruct2 x;
cin >> x;
inputs.push_back( std::move(x) );
}

return inputs;
}

请注意,这不会将 vector 复制为返回值,因为它使用命名返回值优化。

关于c++ - 无法弄清楚如何将结构数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53575618/

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