-1 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 48
1

Не получается вызвать метод класса потомка через ссылку

15.05.2016, 00:39. Показов 565. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
class Book
{
        protected:
            char type;
            char title[20];
            char ISBN[15];
            char edition[10];
            char circulation[15];
            char page_count[10];
        public:
            Book()
            {
                type='b';
            };
            virtual void Print()
            {....}
            virtual void Add_from_file(int n)
              {.....};
Book *book[100];
 
class Magazine: public Book {
    private:
        char frequency_in_month[20];
    public:
        Magazine()
        {type='m';}
        virtual void Add_from_file(int n)
              {...};
        virtual void Add_by_keyboard(char t[20], char is[20], char e[20], char c[20], char p[20], char f[20])
            {....}
inline void fill_by_keyboard()
{ 
    int i;
    for (i=0; book[i]!=NULL; i++)
    {};
    char type_t;
    do{
            cout << "\nВведите тип издания: книга (b), журнал(m), научное издание(s)\n( на уровень выше z ): ";
            type_t=_getche();
            if (type_t=='z')
                {break;}
            
            switch(type_t)
            {
                case 'b':
                    char title[20], isbn[20], edition[20], circulation[20], page_count[20];
                    book[i]=new Book;
                    cout << "\nВведите заголовок (без пробелов),  ISBN, издание, тираж, количество страниц: (ввод производить через запятую и пробел)\n ";
                    cin >> title >> isbn >> edition>> circulation >> page_count;
                    book[i]->Add_by_keyboard(title, isbn, edition, circulation, page_count);
                    break;
                case 'm':
                    char t[20], is[20], e[20], c[20], p[20], f[20];
                    book[i]= new Magazine;
                    cin >> t >> is>> e >> c >> p >> f;
                    cout << "\nВведите заголовок (без пробелов),  ISBN, издание, тираж, количество страниц, частота выпуска: (ввод производить через запятую и пробел)\n ";
                    book[i]-> Add_by_keyboard(t, is, e, c, p, f);
                    break;
            }
            }   while(type_t=='b' || type_t=='m' || type_t=='s');
пишет, что book[i]-> Add_by_keyboard(t, is, e, c, p, f); должна быть от 5ти аргументов и что это вообщe book-ий метод, ума не приложу, в чем тут дело и как сделать чтобы заработал Magazin-овский метод
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2016, 00:39
Ответы с готовыми решениями:

Как вызвать определенный метод переданного класса через метод другого класса?
Добрый день. Захотел я вызвать в методе класса метод некоего другого класса, о котором я пока не...

Не получается вызвать метод класса
Помогите найти ошибку в коде не могу вызвать тестовую (отладочную процедуру) вот скрин

Не получается вызвать метод из другого класса
У меня есть 2 формы и 2 соответствующих класса TpsViewFLEX и TpsViewForm2. В классе TpsViewForm2...

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

3
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
15.05.2016, 01:26 2
Hatsuko, у вас тут дикий UB - тема где-то есть на форуме

Добавлено через 4 минуты
Динамический массив new и его структура выделения памяти?
1
1369 / 592 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
15.05.2016, 01:35 3
Фигурную скобку закрыть у класса Book. Для начала.
0
-1 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 48
15.05.2016, 01:38  [ТС] 4
я неаккуратно скопировала... спасибо за помощь что ли...

Добавлено через 1 минуту
то есть нужно сделать массив *book[N] динамическим, и тогда не возникнет UB?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2016, 01:38
Помогаю со студенческими работами здесь

Почему при восходящем приведении типов вызывается метод класса потомка?
class T1 { public virtual void P() { Console.WriteLine(1); } } class T2 : T1...

С помощью делегата из одного класса вызвать private метод с другого класса
доброго времени суток. такой вопрос. С применением делегатов и пониманием проблем нет когда...

Как вызвать метод класса в другом методе этого же класса?
&lt;? class load_files{ public function traverse_hierarchy($path) { // from...

Как вызвать метод вложенного класса в методе родительского класса
Имеется родительский класс для прорисовки графики Jogj package objects; import...

Как в методе класса вызвать другой метод того же класса?
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A,...

Как правильно вызвать метод класса внутри самого класса?
Здравствуйте. Собственно тема прописана в заголовке: как правильно вызвать метод класса внутри...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru