从C中的结构中检索值时编译错误

hom*_*ase -1 c c++ c++builder

我正在使用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},  
};
Run Code Online (Sandbox Code Playgroud)

下面的代码在[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--
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ker 5

struct ephloc objs[15] = { /* whatever */ };
Run Code Online (Sandbox Code Playgroud)

这定义objs为具有15个类型元素的数组ephloc.

objs[iobj]
Run Code Online (Sandbox Code Playgroud)

这将访问该数组的元素.因为每个元素都有类型ephloc,所以这个表达式给你一个ephloc.

objs[iobj][2]
Run Code Online (Sandbox Code Playgroud)

这会尝试访问数组的第二个元素.但是objs[iobj]不是数组,所以编译器告诉你不能这样做.

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

objs[iobj].first_item_ordinal
Run Code Online (Sandbox Code Playgroud)

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