c++ - 访问结构成员问题

标签 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;

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

Error 43 error C2228: left of '.num_filters' must have class/struct/union

这个结构的成员将像这样保存来自 .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]);

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

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

期待满意的回应。

谢谢

最佳答案

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

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


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

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

mono_scan_temp          scan_data_temp;

关于c++ - 访问结构成员问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582833/

相关文章:

c++ - 如何将数据推送到 C++ 中的第二个位置

c++ - 写入 UTF-8 BOM 时出现异常

Java - 从对象属性获取方法

javascript - 分机JS : Why can not call array from another class' property/function?

c++ - 在 C++ 中创建通用对象的最佳方法?

c - 将不同的结构传递给c中的函数

c++ - 在 C++ 中丢弃模板参数是否安全?

c++ - 如何提高文件读取速度?

c++ - 提取 MatConvnet 模型权重

c++ - boost::thread 在线程之间传递数据