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

Наследование - C++

Восстановить пароль Регистрация
 
FauLL
3 / 3 / 1
Регистрация: 17.05.2010
Сообщений: 64
09.12.2011, 00:14     Наследование #1
На основе класса «Массив» создать производный класс «Ассоциативный массив». Данный класс содержит массив указателей, каждый из которых указывает на соответствующий ему элемент исходного массива. В классе должны быть переопределены функции ввода и вывода исходного массива через соответствующие указатели.

Выдает ошибку [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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2011, 00:14     Наследование
Посмотрите здесь:

C++ Наследование
Наследование C++
C++ наследование
C++ наследование
С++ Наследование C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
09.12.2011, 00:26     Наследование #2
Цитата Сообщение от FauLL Посмотреть сообщение
#include <iostream.h>
замени на:

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

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

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

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

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
Yandex
Объявления
12.01.2012, 23:59     Наследование
Ответ Создать тему
Опции темы

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