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

Как связать абстр. классы? - C++

Восстановить пароль Регистрация
 
Simito
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 18
09.04.2011, 01:54     Как связать абстр. классы? #1
Необходим совет или помощь в решении проблемы. Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// a.h
class A
{
   public: virtual void somefuncA() = 0;
};
// b.h
#include "a.h"
#include "c.h"
class B : class A
{
   public: virtual void somefuncB() = 0;
   public: virtual void connect(C* c){}; // почему-то нельзя писать = 0 (?)
};
// c.h
#include "a.h"
#include "b.h"
class C : class A
{
   public: virtual void somefuncC() = 0;
   public: virtual void connect(B* b){};
}
От классов B и С потом наследуются классы с реализацей. Однако компилятор не компилирует. Выдает ошибку b не имеет типа. Можно передавать A* b и A* с, но так не могу вызывать, например, b->somefuncB() и т.д.
Как мне связать два класса С и B между собой по такой схеме?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 01:54     Как связать абстр. классы?
Посмотрите здесь:

Как связать код с графикой? C++
Как связать несколько output потоков? C++
C++ Как связать элементы массивов между собой
C++ Связать классы.
Как связать 2 программы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.04.2011, 08:20     Как связать абстр. классы? #2
Нельзя использовать неизвестные типы. В самом начале допиши:
C++
1
2
3
class A;
class B;
class C;
Т.е. объяви тип перед использованием.
Simito
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 18
09.04.2011, 12:27  [ТС]     Как связать абстр. классы? #3
Спасибо, помогло.
Но я первый раз вижу что надо делать так, разве #include *.h не обеспечивает то самое объявление?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.04.2011, 12:50     Как связать абстр. классы? #4
У тебя перекрёстное объявление. Т.е. после объединения получается именно то, что в первом посте приведено. Т.е. в строке 13 используется неизвестный тип С. А неизвестные типы использовать низя.
Yandex
Объявления
09.04.2011, 12:50     Как связать абстр. классы?
Ответ Создать тему
Опции темы

Текущее время: 09:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru