首页 > 解决方案 > 访问在 .cpp 文件中声明的结构的内容

问题描述

我已经在 example.hpp 和 example.cpp 文件中声明并定义了一个结构。我想在我的主程序中使用这个结构。我已经在我的程序中包含了头文件。我试图访问主程序中结构的成员之一。但它会打印一个垃圾值。它的访问方式是否有错误?

在 example.hpp

    class example
    {    
    struct Map
        {
            int a;     
            int b;       
            string c;       
        }object[];
    };
extern example::Map object[3]

在 example.cpp

#include "example.h"
example::Map object[] =                                                   
{
    {2,3,"xx"},
    {2,4,"yy"},
    {2,6,"zz"},
};

在 main.cpp

#include "example.h"
example::Map object[3]
int main()
{
example::Map lut[3];   // array of objects to the structure
cout<<lut[0].a; // trying to access first row, first integer
return 0;
}

标签: c++

解决方案


你有

  • 在 example.hpp 中定义了一个类
  • 在 example.cpp 中定义了一个全局变量
  • 在 main 中定义了一个局部变量

您根本没有在 main 中使用全局变量。


程序存在的问题:

  • 非静态成员变量不能是未指定长度的数组。该程序格式不正确。
  • 您没有初始化lut[0].a,所以它的值是不确定的。您读取了一个不确定的值,因此程序的行为是未定义的。
  • 你使用string的是你没有申报的。

推荐阅读