首页 > 解决方案 > 从不同的标头访问外部结构成员

问题描述

为以下问题苦苦挣扎太久,需要一点帮助!

尝试从不同的标头访问结构的成员,但内存对我做错的事情有点模糊!我似乎记得我需要用 typedef 做一些奇怪的事情?

解析输入.h

#ifndef PARSEINPUT_H
#define PARSEINPUT_H

extern struct pitching_stat_struct pitching_home_player;

#endif

解析输入.cpp

struct pitching_stat_struct
{
    char playerID[16] = { '\0' };
    char teamID[16] = { '\0' };
    unsigned short W = 0;
    unsigned short L = 0;
    unsigned short G = 0;
} pitching_home_player;

其他的.cpp

#include "parseinput.h"

void getStructElement()
{
    unsigned short playersW = pitching_home_player.W;
    // Results in below errors:
    // error C2027: use of undefined type 'pitching_stat_struct
    // error C2228: left of '.W' must have class/struct/union
}

感谢帮助。

标签: c++

解决方案


翻译单元拥有您想要使用的类型的对象是不够的。它还需要知道它是如何定义的。仅包括 parseinput.h 并没有给出该定义。为了做到这一点,你需要有

解析输入.h

#ifndef PARSEINPUT_H
#define PARSEINPUT_H

struct pitching_stat_struct
{
    char playerID[16] = { '\0' };
    char teamID[16] = { '\0' };
    unsigned short W = 0;
    unsigned short L = 0;
    unsigned short G = 0;
}

extern pitching_stat_struct pitching_home_player;

#endif

解析输入.cpp

#include "parseinput.h"

pitching_stat_struct pitching_home_player;

其他的.cpp

#include "parseinput.h"

void getStructElement()
{
    unsigned short playersW = pitching_home_player.W;
    //...
}

推荐阅读