Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Simito
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 18
#1

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

09.04.2011, 01:54. Просмотров 852. Ответов 3
Метки нет (Все метки)

Необходим совет или помощь в решении проблемы. Код:
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 между собой по такой схеме?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 01:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как связать абстр. классы? (C++):

Связать классы. - C++
Дрпустим есть два класса и некторые методы в них: в 1(class c1) ... void SetLight(int lightcount) ... в 2(class c2) ... ...

Связать классы Education и Info, предоставляющие информацию о сотруднике. - C++
Создать 2 базовых класса Education (содержит информацию об образовании сотрудника) и Info (содержит информацию о личных данных сотрудника)....

Связать следующие классы в иерархию наследования: ArcherCharacter, Wizard, SwordsMan, LongRange - C++
Character (Персонаж), LongRange (Персонаж дальнего действия), Wizard (Маг), SwordsMan (Мечник), Archer (Лучник). #include <string> //...

Непонятна тема (Классы содержащие другие классы, как данные члены ) - C++
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include <iostream> class Point { public: void SetX(int...

Как связать 2 программы - C++
Как одной программе считывать значения из другой программы и выводить результат исходя из взятых значений?

Как связать код с графикой? - C++
Всем привет! Подкиньте, пожалста, литературы, как связать 2д/3д графику с кодом. Например, чтобы при задании координат на декартовой...

3
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.04.2011, 08:20 #2
Нельзя использовать неизвестные типы. В самом начале допиши:
C++
1
2
3
class A;
class B;
class C;
Т.е. объяви тип перед использованием.
1
Simito
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 18
09.04.2011, 12:27  [ТС] #3
Спасибо, помогло.
Но я первый раз вижу что надо делать так, разве #include *.h не обеспечивает то самое объявление?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.04.2011, 12:50 #4
У тебя перекрёстное объявление. Т.е. после объединения получается именно то, что в первом посте приведено. Т.е. в строке 13 используется неизвестный тип С. А неизвестные типы использовать низя.
0
09.04.2011, 12:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2011, 12:50
Привет! Вот еще темы с ответами:

Программа по классам, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы - C++
Нужно написать программу, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы. Реализовать её нужно в трех...

Как связать два файла с кодами? - C++
В одном файле вычисляется константа, которая используется при расчете функции в другом файле. Какой элементарный способ можно использовать,...

Как связать число символов и слово - C++
#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string str, s1, s2; int...

Как связать несколько output потоков? - C++
Можно ли создать поток, который будет связан с несколькими потоками, что-бы при записи в него производиласт запись и во все связаные...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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