访问结构成员问题

时间:2013-09-03 01:36:37

标签: c++ class struct

我是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]);

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

我知道这是一个简单的问题但事先抱歉我的知识有限。

期待有利的回应。

由于

1 个答案:

答案 0 :(得分:1)

您显然有子表达式XXX.num_filters,而XXX不是mono_scan_temp类型的对象。

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


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

虽然你的程序的其余部分似乎是在C中,但这行确实需要C ++,所以请确保你使用的是C ++编译器,文件名以.cpp结尾(如果这真的是你想要的)

mono_scan_temp          scan_data_temp;