Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 12

Некорректное взаимодействие заголовочных файлов

06.06.2015, 21:30. Показов 519. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется три класса (для каждого отдельный .h). Также есть два enum types, хранящихся в .h с классом.
Компилятор во всех заголовочных файлах выдает ошибки:
syntax error : identifier 'ИмяКласса' - выдает, если я в метод передаю указатель/ссылку на класс/enum из другого файла.
missing type specifier - int assumed. Note: C++ does not support default-int - выдает, если типом переменной или возвращаемого значения является класс из другого файла.

Никак не могу понять, как исправить, помогите, пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2015, 21:30
Ответы с готовыми решениями:

Про добавление заголовочных файлов в заголовочных файлах
В который раз эта вещь засовывает мозги в блендер! Я про то, что не могу однозначно запомнить (основываясь на моих знаниях о директиве...

Раздельная компиляция (нюансы использования заголовочных файлов и файлов реализации)
Почему во многих учебниках функции-члены класса внутри класса только объявляют, но определяют вне самого класса (не, ну как бы в классе, но...

Подключение заголовочных файлов и файлов реализации
Здравствуйте,при создании класса в visual studio руками не компилится проект,при создании через add class все работает,для примера написал...

3
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.06.2015, 21:38
Выкладывай файлы.
0
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 12
07.06.2015, 13:33  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Board,h
 
#pragma once
 
#include "Figure.h"
#include "Pawn.h"
 
class Board{
private:
    Figure*** board;
public:
    Board();
    Figure* GetSquare(int x, int y);
    void SetSquare(int x, int y, Figure* Setting);
    void AnnulSquare(int x, int y);
    char** ToString();
    void Set();
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//Figure,h
 
#pragma once
 
#include "Board.h"
 
enum Color{
    White,
    Black
};
 
enum Type{
    figure,
    pawn
};
 
class Figure{
protected:
    Color color;
    int x;
    int y;
    Type type;
public:
    virtual void Move(int newX, int newY, Board* The, Color& turn) = 0;
    virtual int GetX() = 0;
    virtual int GetY() = 0;
    virtual Type* GetType() = 0;
    virtual Color* GetColor() = 0;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Pawn,h
 
#pragma once
 
#include "Figure.h"
#include "Board.h"
 
class Pawn : Figure{
private:
    bool moved;
public:
    Pawn(int x, int y, Color color, bool Moved);
    void Move(int x, int y, Board* The, Color& turn);
    int GetX();
    int GetY();
    /*взятие на проходе...
    Думаю, стоит реализовать его в board
    А как иначе?*/
    Type* GetType();
    Color* GetColor();
    ~Pawn();
};
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
07.06.2015, 14:09
Board.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//#include "Figure.h"
//#include "Pawn.h"
class Figure;
 
class Board{
private:
    Figure*** board;
public:
    Board();
    Figure* GetSquare(int x, int y);
    void SetSquare(int x, int y, Figure* Setting);
    void AnnulSquare(int x, int y);
    char** ToString();
    void Set();
};
Figure.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
pragma once
 
//#include "Board.h"
class Board;
 
enum Color{
    White,
    Black
};
 
enum Type{
    figure,
    pawn
};
 
class Figure{
protected:
    Color color;
    int x;
    int y;
    Type type;
public:
    virtual void Move(int newX, int newY, Board* The, Color& turn) = 0;
    virtual int GetX() = 0;
    virtual int GetY() = 0;
    virtual Type* GetType() = 0;
    virtual Color* GetColor() = 0;
};
Pawn.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once
 
#include "Figure.h"
//#include "Board.h"
class Board;
 
class Pawn : Figure{
private:
    bool moved;
public:
    Pawn(int x, int y, Color color, bool Moved);
    void Move(int x, int y, Board* The, Color& turn);
    int GetX();
    int GetY();
    /*взятие на проходе...
    Думаю, стоит реализовать его в board
    А как иначе?*/
    Type* GetType();
    Color* GetColor();
    ~Pawn();
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2015, 14:09
Помогаю со студенческими работами здесь

Подключение заголовочных файлов
Итересует меня вопрос : нужно ли при компиляции программ оставлять только нужные хэдеры ? т.е. их минимальное кол-во для корректной...

Подключение заголовочных файлов
Как работает подключение заголовчных файлов в Линукс во время компиляции? К примеру имею свой собственный заголовочный файл test.h и...

Подключение заголовочных файлов
Начал изучать С++, скачал несколько книг и заметил что в одних при включении заголовочных файлов (например iostream.h) используется запись:...

Подключение заголовочных файлов
Здравствуйте. Возникают ошибки при компиляции проекта: 1. Указывает на указатель: 2. Указывает на указатель и коллекцию указателей: ...

Подключение заголовочных файлов.
У меня есть заголовочный файл: ...\1\2\file.h. в папке "1" есть file2.h. Как подключить к "file.h" "file2.h"?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru