C++:跨类的结构

Ath*_*ius 3 c++ struct class

我有两个类:MazeClass和CreatureClass,它们使用一个名为"coordinates"的结构,我怎样才能在两个类中使用结构?我试过把结构放两次,我得到:

MazeClass.h:16:8:错误:重新定义'struct coordinate'

CreatureClass.h:11:18:错误:'结构坐标'的先前定义

Cam*_*ron 6

您应该只在头文件中定义一次结构.移动coordinates到自己的头文件(带有包含保护),然后在其他两个头中包含该头.

示例coordinates.h:

#ifndef COORDINATES_H
#define COORDINATES_H

struct coordinates {
    // ...
};

#endif
Run Code Online (Sandbox Code Playgroud)

从技术上讲,可以coordinates在两个标题中定义(虽然从可维护性的角度来看很糟糕 - 保持干燥!).在出现问题时,另一头或实现文件中包括这些头的(直接或间接) -那么编译器看到两种不同的coordinates结构定义(不知道它们是相同的),并与错误抱怨你"发布了.