Форум программистов, компьютерный форум CyberForum.ru

Перекрестные заголовочные файлы. Как быть? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ не могу понять в чем дело http://www.cyberforum.ru/cpp-beginners/thread801295.html
In file included from /usr/local/lib/gcc47/include/c++/csignal:44:0, from /home/dir/core.h:67: /usr/include/signal.h:78:25: error: conflicting declaration 'sigaction* restrict' /usr/include/signal.h:77:45: error: 'restrict' has a previous declaration as 'const sigaction* restrict' /usr/include/signal.h:85:62: error: conflicting declaration 'sigset_t* restrict'...
C++ Как работает цикл Уважаемые, не могли бы вы пояснить работу следующего цикла: vector<int> path; for (int cur=t; cur!=-1; cur=p) path.push_back (cur); reverse (path.begin(), path.end()); http://www.cyberforum.ru/cpp-beginners/thread801285.html
Вызвать функцию из другой функции.Работа с мышью[Из подменю в меню. Консоль] C++
Добрый день, пишу курсовую работу, у меня есть несколько функций, например: Главное меню: Играть (пользователь заходит сюда и попадает в это меню: процедуры аля "Новая игра, рекорды и помощь."), Об авторе,Заставка. Мне необходимо вернуться из любого пункта из меню играть обратно в главную программу. Не получается. Это черновой вариант работы, в консольном приложении, если удастся написать на...
C++ Написать программу, определяющую сумму элементов массива, находящихся в массиве после первого отрицательного элемента
Создать массив из 20 случайных чисел в диапазоне от -10 до 30. Написать программу, определяющую сумму элементов массива, находящихся в массиве после первого отрицательного элемента.
C++ Библеотека FLTK и граффические классы http://www.cyberforum.ru/cpp-beginners/thread801269.html
Народ всем привет короче я читаю книгу Строуструпа Программирование принцыпы и практика использования C++ и короче я дошел до 13 главы там про библеотеку FLTK и граффические классы и после 13 главы упражнения есть которые я вообще не могу решить че делать???
C++ На основе созданного класса OPERATION, создать класс-потомок OP_SUMMATOR, который производит сложение двух полей Я создал класс OPERATION, который является абстрактной операцией над двумя числами типа int. Непосредственно сама операция выполняется в процедуре execute, которая выводит результат на экран. Помогите на основе созданного класса OPERATION, создать класс-потомок OP_SUMMATOR, который производит сложение двух полей. И на основе этого же класса OPERATION создать класс... подробнее

Показать сообщение отдельно
Tolias28
202 / 117 / 2
Регистрация: 18.08.2010
Сообщений: 1,006
05.03.2013, 17:07     Перекрестные заголовочные файлы. Как быть?
Есть два класса. Первый знает о втором классе, а второй о первом. Потому ссылки на заголовочные файлы получаются перекрестными. Из-за этого компилятор жестко бесится и сыплет кучу маловразумительных ошибок:
Код
Error	2	error C2143: syntax error : missing ';' before '*'	d:\test\testprojects\cpp_ololo\cpp_ololo\cashier.h	9	1	cpp_ololo
Error	3	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	d:\test\testprojects\cpp_ololo\cpp_ololo\cashier.h	9	1	cpp_ololo
Error	4	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	d:\test\testprojects\cpp_ololo\cpp_ololo\cashier.h	9	1	cpp_ololo
Error	5	error C1020: unexpected #endif	d:\test\testprojects\cpp_ololo\cpp_ololo\client.cpp	8	1	cpp_ololo

Error	7	error C2143: syntax error : missing ';' before '*'	d:\test\testprojects\cpp_ololo\cpp_ololo\client.h	8	1	cpp_ololo
Error	8	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	d:\test\testprojects\cpp_ololo\cpp_ololo\client.h	8	1	cpp_ololo
Error	9	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	d:\test\testprojects\cpp_ololo\cpp_ololo\client.h	8	1	cpp_ololo
Error	10	error C1020: unexpected #endif	d:\test\testprojects\cpp_ololo\cpp_ololo\cashier.cpp	7	1	cpp_ololo
	11	IntelliSense: identifier "Client" is undefined	d:\test\testprojects\cpp_ololo\cpp_ololo\cashier.h	9	2	cpp_ololo
Написал в каждом файле #pragma once, но ничего не меняется. Попробовал использовать include guards, но, как ни странно, все ошибки на месте, да еще и новые прибавились:
Код
Warning	1	warning C4603: 'Client_CPP' : macro is not defined or definition is different after precompiled header use	d:\test\testprojects\cpp_ololo\cpp_ololo\client.cpp	3	1	cpp_ololo
Warning	6	warning C4603: 'Cashier_CPP' : macro is not defined or definition is different after precompiled header use	d:\test\testprojects\cpp_ololo\cpp_ololo\cashier.cpp	3	1	cpp_ololo
Я не знаю, что делать. Как решить эту проблему вместе с тем, чтобы каждый класс знал о другом классе?

Client.h
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
#ifndef Client_H
#define Client_H
#include "Cashier.h"
class Client
{
public:
    Cashier* cashier;
};
 
#endif //Cashier_H
Client.cpp
C++
1
2
3
4
5
6
7
8
#pragma once
#ifndef Client_CPP
#define Client_CPP
#include "stdafx.h"
#include "Client.h"
 
 
#endif //Client_CPP
Cashier.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
#ifndef Cashier_H
#define Cashier_H
#include "Client.h"
 
class Cashier
{
public:
    Client* client;
};
 
#endif //Cashier_H
Cashier.cpp
C++
1
2
3
4
5
6
7
#pragma once
#ifndef Cashier_CPP
#define Cashier_CPP
#include "StdAfx.h"
#include "Cashier.h"
 
#endif //Cashier_CPP
StdAfx.h
C++
1
2
3
4
5
6
7
8
9
10
#pragma once
#pragma once
#ifndef stdafx_H
#define stdafx_H
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
 
#endif //stdafx_H
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru