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

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

Войти
Регистрация
Восстановить пароль
 
'HelloWorld'
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 31
#1

Абстрактные классы. Найти ошибку - C++

19.05.2011, 20:53. Просмотров 332. Ответов 4
Метки нет (Все метки)

Требуется реализовать базовый класс с виртуальным методом вывода на экран нужного объекта.
От базового класса наследуется 3 других класса. Нужно создать ещё один класс, который будет собирать нужную последовательность объектов и выводить на экран.
Помогите, пожалуйста, найти ошибку.
Класс, который будет собирать последовательность у меня содержит массив указателей на объекты.
C++
1
2
3
4
5
6
7
8
class Posled
{
public:
    CBase *p[3];
    void Add(CBase *);
    void Show();
    //методы add, show
};
Базовый класс
C++
1
2
3
4
5
6
7
class CBase
{
public:
    char name[20];
    char cch[10];
    virtual void Show()=0; //??????????
};
И методы класса Posled
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Posled::Add(CBase *)
{
    p[0] = new Class1;
    p[1] = new Class2;
    p[2] = new Class3;
}
void Posled::Show()
{
    p[0]->Show();
    p[1]->Show();
    p[2]->Show();
}
Функции Show(); для каждого класса также реализованы. Ошибка вот в чем: при вызове метода Add ошибка компиляции: Идентификатор Add не найден.
Вызываю метод вот так:
C++
1
2
3
Add(Class1[j]);
Add(Class2[m]);
Add(Class3[k]);
Объясните, пожалуйста, что не так.
С классами работаю впервые... Не знаю где накосячил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 20:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Абстрактные классы. Найти ошибку (C++):

Абстрактные классы - C++
Объясните пожалуйста почему это не работает и как исправить? cannot declare variable 'b1' to be of abstract type 'classB' because the...

Абстрактные классы - C++
Помогите пожалуйста, сообразить не могу. Есть абстрактный класс. У него есть метод, чтение из файла. Есть производный от него класс....

Абстрактные классы - C++
Ребята! Помогите с таким делом. Мне дали задание создать абстрактный класс Автомобиль, классы наследники: гоночный автомобиль, асфальтный...

Абстрактные классы - C++
Никак не могу понять смысл абстрактных данных.Ведь мы можем использовать и обычный класс,только абстракция запрещает создавать объекты.

абстрактные классы - C++
Здрасте я при написании программы столкнулся с проблемой что немогу создать указатель на объект т.к. класс абстрактный прошу помогите...

Абстрактные классы - C++
void _tmain() { const int lim = 100; MyFunction *pFunc ; int count = 0; pFunc = new My_Exp; pFunc = new Line; pFunc...

4
ZiGSuN
27 / 27 / 2
Регистрация: 02.12.2009
Сообщений: 66
19.05.2011, 20:58 #2
насколько я понимаю нужно создать объект класса "Posled" и вызывать функцию так:
C++
1
2
3
4
5
 Posled A;
A.Add(Class1[j]);
A.Add(Class2[m]);
A.Add(Class3[k]);
;
1
'HelloWorld'
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 31
19.05.2011, 21:06  [ТС] #3
хм...теперь ошибка Posled::Add: невозможно преобразовать параметр 1 из "Class1" в "CBase*"
0
ZiGSuN
27 / 27 / 2
Регистрация: 02.12.2009
Сообщений: 66
19.05.2011, 21:12 #4
C++
1
new Class
после new должен стоять тип!
может все исходники выложите а то не понятно что такое Class1.2.3 ! тогда можно надеятся на более эффективную помощь!
0
'HelloWorld'
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 31
19.05.2011, 21:21  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <conio.h>
class CBase
{
public:
    char name[20];
    char cch[10];
    virtual void Show()=0;
};
class Class1 : public CBase
{
public:
    char param1[10];
    char param2[20];
        char vt[10];
    void Show();
};
class Class2 : public CBase
{
public:
    char sp[15];
    char l1[20];
    void Show();
};
class Class3 : public CBase
{
public:
    char conf1[20];
    char conf2[20];
    char conf3[20];
    void Show();
};
class Posled
{
public:
    CBase *p[3];
    void Add(CBase *);
    void Show();
};
0
19.05.2011, 21:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2011, 21:21
Привет! Вот еще темы с ответами:

Абстрактные классы - C++
Народ, вопрос есть такой. Есть абстрактный класс class A { protected: int a; public: A(int b=0):a(b) {

абстрактные классы - C++
компилятор ругается когда я пытаюсь записать объект класса!!!! подскажите что я не правильно делаю!! #include &lt;cstdlib&gt; #include...

Абстрактные классы - C++
Помогите плиз, экзаменационное задание, а разобраться не могу с ним: Создать консольное приложение, в котором реализовать работу...

Абстрактные классы - C++
В общем есть у нас 2 абстрактных класса CA и CB и 2 дочерних от них класса CC и CD. Как сделать так чтобы CD наследовал CB поверх которого...


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

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

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