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

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

Восстановить пароль Регистрация
 
'HelloWorld'
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 31
19.05.2011, 20:53     Абстрактные классы. Найти ошибку #1
Требуется реализовать базовый класс с виртуальным методом вывода на экран нужного объекта.
От базового класса наследуется 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]);
Объясните, пожалуйста, что не так.
С классами работаю впервые... Не знаю где накосячил
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 20:53     Абстрактные классы. Найти ошибку
Посмотрите здесь:

C++ абстрактные классы
C++ Абстрактные классы
Абстрактные классы C++
C++ Абстрактные классы
C++ Абстрактные классы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ZiGSuN
 Аватар для 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]);
;
'HelloWorld'
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 31
19.05.2011, 21:06  [ТС]     Абстрактные классы. Найти ошибку #3
хм...теперь ошибка Posled::Add: невозможно преобразовать параметр 1 из "Class1" в "CBase*"
ZiGSuN
 Аватар для ZiGSuN
27 / 27 / 2
Регистрация: 02.12.2009
Сообщений: 66
19.05.2011, 21:12     Абстрактные классы. Найти ошибку #4
C++
1
new Class
после new должен стоять тип!
может все исходники выложите а то не понятно что такое Class1.2.3 ! тогда можно надеятся на более эффективную помощь!
'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();
};
Yandex
Объявления
19.05.2011, 21:21     Абстрактные классы. Найти ошибку
Ответ Создать тему
Опции темы

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