c++ - 访问在 .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;
}
解决方案
你有
- 在 example.hpp 中定义了一个类
- 在 example.cpp 中定义了一个全局变量
- 在 main 中定义了一个局部变量
您根本没有在 main 中使用全局变量。
程序存在的问题:
- 非静态成员变量不能是未指定长度的数组。该程序格式不正确。
- 您没有初始化
lut[0].a
,所以它的值是不确定的。您读取了一个不确定的值,因此程序的行为是未定义的。 - 你使用
string
的是你没有申报的。
推荐阅读
- django - 我无法在 Django 项目中创建迁移应用程序名称
- geoserver - 为什么geoserver中的栅格数据是空白的?
- python - 在后台运行 python 脚本后得到提示
- java - 从相机或画廊拍摄图像并在活动中显示
- c# - 会话变量不为 Chrome/Android 存储
- python - 使用 json.dump 时附加日期和时间戳?
- omnet++ - 快速模式下的模拟需要大量时间
- javascript - 如何一次显示一个警报?
- docker - Owncloud docker 容器未运行(执行格式错误)
- c# - 使用 Web.config 转换删除 appSettings 部分中的属性