gpt4 book ai didi

c++ - 从 C 中的结构检索值时出现编译错误

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

我正在使用 C++Builder XE4。我正在尝试将一些 C 代码编译到控制台应用程序中。 C 文件很大,所以我试图集中精力解决这个问题。该代码设置了两个结构,然后尝试调用一个失败的值。

struct ephloc
{
long first_item_ordinal;
long last_item_ordinal;
int days_per_record;
int items_per_record;
int total_records;
};

struct ephloc objs[15] = {
{ 641, 2210500, 8, 44, 50224},
{2210501, 3014088, 16, 32, 25112},
{3014089, 4043684, 16, 41, 25112},
{4043685, 4483148, 32, 35, 12556},
{4483149, 4809608, 32, 26, 12556},
{4809609, 5098400, 32, 23, 12556},
{5098401, 5349524, 32, 20, 12556},
{5349525, 5600648, 32, 20, 12556},
{5600649, 5851772, 32, 20, 12556},
{5851773, 6730696, 16, 35, 25112},
{6730697, 10849068, 4, 41, 100448},
{10849069,14967440, 4, 41, 100448},
{14967441,14967452, 401792, 8, 1},
{14967453,14967464, 401792, 8, 1},
};

下面的代码在 [2] 处停止并显示下面的两个错误。我怎样才能修改这段代码以使其工作?

E2110:不兼容的类型转换 (C++) 无法完成请求的转换。

E2062 无效间接寻址 (C++)

int LoadData( D, iobj, p, v )
double D;
int iobj;
double p[], v[];
{
int s;
//--Lots of code here--

s = objs[iobj][2];

//--more code here--
}

最佳答案

struct ephloc objs[15] = { /* whatever */ };

这将 objs 定义为一个包含 15 个 ephloc 类型元素的数组。

objs[iobj]

这将访问该数组的一个元素。由于每个元素都有类型 ephloc,因此此表达式为您提供一个 ephloc

objs[iobj][2]

这尝试访问数组的第二个元素。但 objs[iobj] 不是数组,因此编译器告诉您不能这样做。

要访问该元素的成员,请使用成员名称:

objs[iobj].first_item_ordinal

这将访问对象 objs[iobj] 的第一个成员。

关于c++ - 从 C 中的结构检索值时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48992892/

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