Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
3 / 3 / 2
Регистрация: 17.05.2010
Сообщений: 67

Наследование

09.12.2011, 00:14. Показов 1216. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На основе класса «Массив» создать производный класс «Ассоциативный массив». Данный класс содержит массив указателей, каждый из которых указывает на соответствующий ему элемент исходного массива. В классе должны быть переопределены функции ввода и вывода исходного массива через соответствующие указатели.

Выдает ошибку [Linker error] undefined reference to `Stream::Stream()'

Базовый класс.

mas.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef MAS_H
#define MAS_H
class Mas{
    friend ostream& operator <<( ostream &, Mas &);
    friend istream& operator >>(istream &, Mas &);
        friend void operator ++(Mas &);
        friend void operator --(Mas &);
        
    public: 
        Mas ( );
        void umnoj (int);
        void print();
        void vivod();
        int M[10];
    
};
#endif
mas.cpp
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
#include <iostream.h>
#include "mas.h"
Mas::Mas( ){}
ostream & operator<<(ostream &output, Mas &num)
{
 for (int i=0;i<10; i++)
    output<<"("<<num.M[i] << ")" ;
    return output;
}
istream & operator>>(istream &input, Mas &num)
{
        for (int i=0;i<10; i++)
    cin>>num.M[i];
    return input;
}
 
void Mas::umnoj(int a)
{ for (int i=0;i<10; i++)
     M[i]=M[i]*a;
          }
 
void operator++ (Mas &B){
     for (int i=0;i<10; i++)
 B.M[i]=B.M[i]+1;}
void Mas::print()
{
               for (int i=0;i<10; i++)
               cout<<"M[10]="<<M[i]<<endl;
               }
void operator-- (Mas &B)
{
     for (int i=0;i<10; i++)
     B.M[i]=B.M[i]-1;}
void Mas::vivod()
{
               for (int i=0;i<10; i++)
               cout<<"M[10]="<<M[i]<<endl;}
Производный класс

asmas.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef ASMAS_H
#define ASMAS_H
#include "Mas.h"
class Asmas:public Mas
{
    public: 
        void vvod();
        Asmas();
        void print();
    private:
            int *A[10];
            
           
        
};
#endif
asmas.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "asmas.h"
Asmas::Asmas()
{
 for (int i=0;i<10; i++)
 A[i]=&M[i];
}
void Asmas::vvod()
{
               for (int i=0;i<10; i++)
               {
               cout<<"A[10]=";
               cin>>*A[i];
               }
}
 
void Asmas::print()
{
               for (int i=0;i<10; i++)
               cout<<"A[10]="<<*A[i]<<endl;
               }
main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include "mas.h"
#include "asmas.h"
main()
{
    Asmas B;
    B.vvod();
    B.print();
    system("Pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2011, 00:14
Ответы с готовыми решениями:

Заменить наследование классов на наследование интерфейсов
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование в С++
Здравствуйте, написал вот код для программы с наследованием, работает, но когда вычисляет площадь, пишет: S=0,когда площадь не равна нулю....

Наследование
1) Определить класс корова состоящее из следующих полей: идентификационный номер – должно быть гарантировано уникально (для чего...

4
Заблокирован
09.12.2011, 00:26
Цитата Сообщение от FauLL Посмотреть сообщение
#include <iostream.h>
замени на:

#include <iostream>
0
3 / 3 / 2
Регистрация: 17.05.2010
Сообщений: 67
09.12.2011, 10:58  [ТС]
все я разобрался
0
3 / 3 / 2
Регистрация: 17.05.2010
Сообщений: 67
24.12.2011, 11:48  [ТС]
Создать шаблон класса «Массив», который является базовым для шаблона класса «Ассоциативный массив». В классах должны быть определены функции, согласно заданию 1.

Добавлено через 16 часов 15 минут
up++++
0
3 / 3 / 2
Регистрация: 17.05.2010
Сообщений: 67
12.01.2012, 23:59  [ТС]
Создать абстрактный класс «Абстрактный массив», который является базовым для класса «Массив». В классе должна быть определена чистая виртуальная функция для суммы элементов массива, переопределённая в классах «Массив» и «Ассоциативный массив».

Компилятор выдвет две ошибки.

Вот программа

abmas.h
C++
1
2
3
4
5
6
7
8
#ifndef ABMAS_H
#define ABMAS_H
class Abmas{
    public:
    virtual void a() const=0; 
    virtual void vivod();
};
#endif
asmas.cpp
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
#include <iostream.h>
#include "asmas.h"
Asmas::Asmas()
{
 for (int i=0;i<10; i++)
 A[i]=&M[i];
}
void Asmas::vvod()
{
               for (int i=0;i<10; i++)
               {
               cout<<"A[10]=";
               cin>>*A[i];
               }
}
 
 
 
 
void Asmas::print()
{
               for (int i=0;i<10; i++)
               cout<<"A[10]="<<*A[i]<<endl;
               
     }
     
     void Asmas::vivod(){
                {int Sum = 0; 
 
        for (int i = 0; i <*A[i]; i++)
 
        if(*A[i]!=*A[9])
 
        Sum += *A[i];
        
            cout << Ñóììà çíà÷åíèé ýëåìåíòîâ ìàññèâà =  " << Sum << endl;
          }}
asmas.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef ASMAS_H
#define ASMAS_H
#include "Mas.h"
class Asmas:public Mas
{
    public: 
            virtual void a()const{cout<<endl;};
            virtual void vivod();
        void vvod();
        Asmas();
        void print();
    private:
            int *A[10];
            int sum;
            
           
        
};
#endif
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <shlwapi.h>
#include "mas.h"
#include "abmas.h"
#include "asmas.h"
main()
{
    Asmas B;
    Abmas *a; Abmas*h;
    Mas C;
    a=&C;
    h=&B;
    a->vivod();
    h->vivod();
    system("Pause");
    return 0;
}
mas.cpp
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
#include <iostream.h>
#include "mas.h"
Mas::Mas( ){}
ostream & operator<<(ostream &output, Mas &num)
{
 for (int i=0;i<10; i++)
    output<<"("<<num.M[i] << ")" ;
    return output;
}
istream & operator>>(istream &input, Mas &num)
{
        for (int i=0;i<10; i++)
    cin>>num.M[i];
    return input;
}
 
void Mas::umnoj(int a)
{ for (int i=0;i<10; i++)
     M[i]=M[i]*a;
          }
 
void operator++ (Mas &B){
     for (int i=0;i<10; i++)
 B.M[i]=B.M[i]+1;}
void Mas::print()
{
               for (int i=0;i<10; i++)
               cout<<"M[10]="<<M[i]<<endl;
               }
void operator-- (Mas &B)
{
     for (int i=0;i<10; i++)
     B.M[i]=B.M[i]-1;}
void Mas::vivod()
{
               for (int i=0;i<10; i++)
               cout<<"M[10]="<<M[i]<<endl;}
mas.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef MAS_H
#define MAS_H
#include "Abmas.h"
class Mas: public Abmas 
{
      
    friend ostream& operator <<( ostream &, Mas &);
    friend istream& operator >>(istream &, Mas &);
        friend void operator ++(Mas &);
        friend void operator --(Mas &);
        
    public: 
            virtual void a()const{cout<<endl;};
        Mas ( );
        void umnoj (int);
        void print();
        void vivod();
        int M[10];
    
};
#endif
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2012, 23:59
Помогаю со студенческими работами здесь

Наследование
Подскажите,пожалуйста,новичку в чем ошибка.Создал класс человек,создал класс студент,кот.наследует имя от класса человек.Может я тут чего...

наследование
Задача : Базовый класс: class Shape2D { public: Shape2D(); virtual ~ Shape2D(); virtual float Area( )= 0; virtual...

Наследование
Добрый вечер, помогите пожалуйста с наследованием. Написал программу ( ниже ), но как видите пришлось в классе-наследнике Bus ( Vehicle...

Наследование
Реализовать наследование классов квартиры,этаж,подъезд,дом

Наследование
Суть задачи: Реализуйте класс символьная строка,наследуйте от него класс двоичная строка. Реализуйте методы Show(от базовой строки) ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru