gpt4 book ai didi

c++ - 返回一个数组作为指针

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:50 25 4
gpt4 key购买 nike

我正在尝试使用一个单独的函数从文件中读取一些数据值;我遇到了两个错误(我已经很长时间没有使用 c++ 了……):

double * FREAD(std::string fpath){
std::string line;
double * params = new double[14];


std::ifstream parameters (fpath);
if (parameters.is_open())
{
for (int b = 0; b < 14; b++) {
parameters >> line >> params[b];

}
}
parameters.close();



return params;

}

抛出

error C2556: 'double *FREAD(std::string)' : overloaded function differs only by return type from 'double FREAD(std::string)'

error C2040: 'FREAD' : 'double *(std::string)' differs in levels of indirection from 'double (std::string)'

第二个问题是从我在 main 中调用函数的那一行抛出的。

double * param = FREAD(parampath);

error C2440: 'initializing' : cannot convert from 'double' to 'double *'

如果我没有将 param 定义为由 double 值指向的值,我将得到相同类型不匹配的反向错误...

我的理解是我应该返回一个指向我的子函数创建的数组的第一个值的指针,并使用它来处理数据。但是当我调用 main 中的函数时,我似乎无法提取这个值。

最佳答案

最简单、最简单的方法是返回一个容器,例如

#include <array>

std::array<double,14> FREAD(const std::string& fpath)
{
std::string line;
std::array<double, 14> params;
// .... fill params
return params;
}

关于重载错误,您不能通过返回类型重载函数。看起来编译器看到了这两个声明:

double * FREAD(std::string fpath);
double FREAD(std::string fpath);

鉴于上述建议,无论如何你都应该删除它们。

关于c++ - 返回一个数组作为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19611091/

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