0

我是 C++ 类的新手,面临一个简单的问题,但不幸的是还没有得到解决方案,所以这就是为什么在这里发布它。我做了一个这样的结构

struct mono_scan_temp
{
    double num_filters[1][1];
    double filter_data[1024][153][3];
    double shutter_speed[1][3];
    double resolution[1][153];
    double monochromator_gain[1][1];
    double zero[1][1];
    double saturation[1][1];
    double dark_noise[3][1024];
    double slit_size[1][1];
    double version[1][1];
};

这个结构在 .h 文件中,然后我在同一个头文件中实例化它,就像这样

mono_scan_temp          scan_data_temp;

现在,当我尝试从主文件访问其成员时,它会给出此错误。

错误 43 错误 C2228: '.num_filters' 的左侧必须有类/结构/联合

该结构的成员将保存来自 .mat 文件的数据,如下所示

Mat_VarReadData(mat,field_num_filters,scan_data_temp.num_filters,start_num_filters,stride_num_filters,edge_num_filters);

for(i=0;i<field_num_filters->dims[0];i++)
for(j=0;j<field_num_filters->dims[1];j++)
printf("%f \n  ",scan_data_temp.num_filters[i][j]);

头文件也包含在主文件中。

我知道这是一个简单的问题,但由于我的知识有限,请提前道歉。

期待一个有利的回应。

谢谢

4

1 回答 1

1

您显然有一个 subexpression XXX.num_filters,并且XXX不是 type 的对象mono_scan_temp

定义zero为每个维度中绑定 1 的二维数组,以及 a 的成员struct,是业内人士有时所说的“代码味道”。


这一行不在头文件中;它应该放在.cpp文件中。要将全局对象声明为标头中接口的一部分,请extern在声明之前添加:extern mono_scan_temp scan_data_temp;. 这是在.cpp文件中定义的补充。

尽管您的程序的其余部分似乎是 C 语言,但这一行确实需要 C++,因此请确保您使用的是 C++ 编译器并且文件名以.cpp(如果这确实是您想要的)结尾。

mono_scan_temp          scan_data_temp;
于 2013-09-03T01:41:18.600 回答