Как создавать файлы заголовков, когда большинство классов зависят друг от друга [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как создавать файлы заголовков, когда большинство классов зависят друг от друга [дубликат]

Сообщение Anonymous »

Мне хотелось бы знать, что считается «правильным» способом использования файлов заголовков или просто общие правила, которые можно и чего нельзя делать.
Например, у меня есть:

Tile.h:

Код: Выделить всё

//
// Created by MBK on 12.11.25.
//

#ifndef PRAK_TILE_H
#define PRAK_TILE_H

#include 
class Tile {

std::string currentTexture;

void doNothing() {

}
};

class Floor : public Tile { // Accessible tile, characters can enter/leave them

};

class Wall : public Tile { // Non-Accessible tile, characters can't enter them

};

class Portal : public Tile {

};

#endif //PRAK_TILE_H
Character.h

Код: Выделить всё

//
// Created by MBK on 13.11.25.
//

#ifndef PRAK_CHARACTER_H
#define PRAK_CHARACTER_H

#include "header.h"
class Character{
private:
std::string Texture;
Tile* currentTile; // The tile the player is at
// To implement : AbstractUI
public:
Character(std::string_view txt) : Texture (txt){};

std::string_view getTexture() const;

void setTile(Tile* newTile);

// To implement : move()

};

#endif //PRAK_CHARACTER_H
header.h

Код: Выделить всё

//
// Created by MBK on 13.11.25.
//

#ifndef PRAK_HEADER_H
#define PRAK_HEADER_H

#include 
#include "Tile.h"
#include "Character.h"

#endif //PRAK_HEADER_H
Если я включаю заголовок в файл Tile, я получаю сообщение об ошибке, что Tile не определен в файле символов.h, но я все равно хочу, чтобы Tile включал заголовок, поскольку он также будет зависеть от других классов, а все классы взаимосвязаны. Должен ли я вызывать только те заголовки, которые буду использовать индивидуально в каждом файле, или есть другой подход?

Подробнее здесь: https://stackoverflow.com/questions/798 ... each-other
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»