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

Взаимное ограничение видимости классов. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Использование процедур* http://www.cyberforum.ru/cpp-beginners/thread308477.html
Бесконечная последовательность рациональных чисел v0, v1, ... образована по следующему закону:
C++ Файлы Дан символьный файл f. http://www.cyberforum.ru/cpp-beginners/thread308469.html
Рекурсивные функции C++
Если честно эти лекции я пропустил (не ругайте сильно), помогите пожалуйста решить. Вот собственно сами задания: 1.Написать рекурсивную функцию, вычисляющую факториал числа. Для вычислений используйте рекурсивную формулу 0!=1, n! = (n-1)!*n 2.Написать рекурсивную функцию, вычисляющую n-е число Фибоначчи. Для этого используйте соотношение f0 = 1, f1 = 1, fn = fn-1+fn-2Найти сумму первых 50...
создать структуру! C++
создать структуру man в которую входят фамилия, адрес и возраст. в структуру man входит структура student в которой переменные: дисциплина, и еще 2 параметра. Обратится к полю структур.
C++ Добавление заметок в календарь http://www.cyberforum.ru/cpp-beginners/thread308438.html
http://narod.ru/disk/14483624001/Debug.rar.html вот есть визуальный проект 2 календарь там нужно чтоб можно было делать заметку на какое либо число помогите переделать сам не разбираюсь или либо сделать любой другой мне на зачет нужно
C++ Функция для сохранения в файл Есть функция для сохранения в файл. void Outfile(stud& s) { ofstream base("base.txt"); if(!base) std::cout << "Can't create output file"; base<<"Табельный номер: "<<s.n<<endl; base<<"Студент: "<<s.fio<<endl; base<<"Год рождения: "<<s.gr<<endl; base<<"Размер стипендии: "<<s.st<<endl; base.close(); подробнее

Показать сообщение отдельно
rotten
0 / 0 / 0
Регистрация: 30.05.2011
Сообщений: 3
30.05.2011, 17:51     Взаимное ограничение видимости классов.
Всем доброго дня.
Есть банальная ситуация(по крайней мере для меня т.к. недавно только начал учить с++):

Есть 2 класса. 1й - в файле A.h:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
 
// include guard
#ifndef BB
#define BB 
#include "B.H"
#endif
 
 
class A{
 
public:
    A();
    
    A(B b);
};
Ну и второй - в файле B.h:
C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
 
#include "A.H"
    
class B{
 
public:
    B();
    B(A a);
};
Что мы имеем и что по шагам должен делать компилятор?
1. Класс А использует класс В, соответственно вначале ему нужно его подключить.
2. Подключив его и ввиду того что классу В тоже нужен класс А, то класс В тоже подключает класс А; при помощи макросов установлено безопасное подключение и файл подключаеться лишь раз. Тут все хорошо.
3. Вот оно - несоответствие: Компилятор, продолжая анализировать класс А, который класс В хочет подключить, находит в нем первое упоминание класса В во втором перегруженном конструкторе:
C++
1
A(B b);
Но класс В еще не обявлен, и компилятор соответственно о нем не знает.

Я запутался. Сначала думал что проблема както напряму может быть связана с множественным подключением, но тут наоборот както выходит - не хватает инфы о Классах.
Это и не странно с одной стороны.
Я - продолжительное время на джаве работал, там такого нет. Потому и странно для меня.

Подскажите пожалуйста какими способами можно закрыть этот дефект и дать обеим классам знать о себе сразу... перед обьявлениями?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru