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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 605
#1

Проблма с #include - C++

10.01.2013, 13:14. Просмотров 271. Ответов 4
Метки нет (Все метки)

Добрый день.
Есть два класса, например A и B. Эти классы независимы друг от друга. В заголовочном файле класса А делаю:
C++ (Qt)
1
#include "B.h"
. Теперь я могу использовать все фичи класса B, например так:
C++ (Qt)
1
B *objOfClassB = new B(this);
Т.к. я в конструктор передаю указатель на класс А, то в объекте objOfClassB нужно этим как-то воспользоваться. Например:
C++ (Qt)
1
2
3
4
5
B::B(B *parent) : QWidget(parent)
{
    this->setGeometry(parent->p_x, parent->p_y, parent->width(), parent->height());
    p_pointerOnA = parent;
}
А для этого нужно сделать инклуд в классе B:
C++ (Qt)
1
#include "A.h"
Получается, как я понял, бесконечное вложение классов друг в друга. Ну и компилятор сообщает:
ошибка: invalid use of incomplete type 'B'
ошибка: forward declaration of 'struct B'
и т.д. Как с этим бороться? Записать объявление:
C++ (Qt)
1
class A;
толку не дает, не могу использовать функции класса А.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2013, 13:14     Проблма с #include
Посмотрите здесь:

Работа с файлами в C# с исп. библиотек #include <stdio.h> #include <stdlib.h> #include <math.h> #include <io.h> - C++
В типизированном файле записаны названия городов и их численность. Увеличить численность каждого города на 5% (Количество жителей всегда...

Чем отличается #include <cstring>, #include <string> и #include <string.h>? - C++
Доброго времени суток :) Пишу свой класс и мне для нужны функции для работы со строками. Когда подключаю #include &lt;string&gt; все что мне...

ошибка в лабе не находит #include<iomanip.h> #include<conio.h> - C++
Само задание: Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до A минут в месяц-C руб. а разговоры сверх...

#include <iostream> - C++
Объясните для чего применяется эта директива.

Проблема с #include - C++
Проект состоит из нескольких классов, каждый из которых реализован в своём модуле. Есть Главный класс и Дочерний класс, экземпляр...

include guard - C++
Объясните пожалуйста попонятнее как использовать include guard. Много всего пересмотрел а понять не могу. Как мне Одно и тоже подключение...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15840 / 10167 / 1522
Регистрация: 24.12.2010
Сообщений: 19,167
10.01.2013, 18:15     Проблма с #include #2
Цитата Сообщение от [progeR
;3978723]бесконечное вложение классов друг в друга
Не классов, а только инклюдов
С бесконечным вложением инклюдов борются обычно так
a.h
C
1
2
3
4
 if !defined A_H
#define A_H
.....
#endif  // A_H
Добавлено через 7 минут
ИМХО, этой проблме место не здесь, в форуме "С++ для начинающих"
FlaYnoSt
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 18
10.01.2013, 18:28     Проблма с #include #3
Автор, почитай про стражи включения. Кстати, QtCreator же автоматически их добавляет, при создании заголовочных файлов.
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 605
10.01.2013, 18:31  [ТС]     Проблма с #include #4
Цитата Сообщение от FlaYnoSt Посмотреть сообщение
Автор, почитай про стражи включения. Кстати, QtCreator же автоматически их добавляет, при создании заголовочных файлов.
А толку, все равно не работает.
Что сделать, чтобы 2 класса, вложенные друг в друга не выдавали ошибку?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2013, 18:35     Проблма с #include
Еще ссылки по теме:

#include <vcl.h> - C++
Доброго времени суток, Уважаемые Форумчане! Вопрос состоит в следующем: есть программа на С++, которая должна изобразить (графически)...

#include <vcl.h> - C++
Скажите пожалуйста, что это за билдеровская приблуда?

ошибка с include - C++
вобщем, проблема в следующем: при компиляции выдает ошибки Unable to open include file iostream и vector, с std тоже ошибка в объявлении.....

Инклюиды - include - C++
Доброго времени суток ! столкнулся с такой проблемой что нахожу какие-то примеры программ в инэте запускаю у себя а оно ругается что нет...


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

Или воспользуйтесь поиском по форуму:
canopen
412 / 411 / 12
Регистрация: 16.07.2012
Сообщений: 886
10.01.2013, 18:35     Проблма с #include #5
В A.h:
C++
1
2
3
4
5
6
class A
{
public:
    A();
    void MethodA();
};
В A.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
#include "A.h"
#include "B.h"
 
A::A()
{
    B* b = new B(this);
}
 
void A::MethodA()
{
}
В B.h:
C++
1
2
3
4
5
6
7
class A;
 
class B
{
public:
    B(A* a);
};
В B.cpp:
C++
1
2
3
4
5
6
7
#include "A.h"
#include "B.h"
 
B::B(A* a)
{
    a->MethodA();
}
Yandex
Объявления
10.01.2013, 18:35     Проблма с #include
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru