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

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

Восстановить пароль Регистрация
 
_Goodwin
 Аватар для _Goodwin
7 / 7 / 2
Регистрация: 28.11.2012
Сообщений: 89
09.01.2013, 06:04     Наследование Классов с++ #1
при компицяции выдаёт Unresolved external 'chelovek::chelovek(int,int,int)' referenced from ...*.OBJ
В чом ошибка???

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
class point
{public: int x,y;
public: point(int a1,int b1); void tochka(int a1,int b1);};
 
 
class circle:public point
{protected: int r;
public: circle (int a1,int b1,int c);  void krug (int a1,int b1,int c);};
 
 
class TeloRukaGolova:public circle
{public: TeloRukaGolova(int a1,int b1,int c);  void kvadrat(int a1,int b1,int c);};
 
 
class parashut: public circle
{
public: parashut (int a1,int b1,int c); void myparashut(int a1,int b1,int c);
};
 
 
class chelovek: public circle,public parashut, public TeloRukaGolova
{
public: chelovek(int a1,int b1,int c); void parashutist(int a1,int b1,int c);
};
 
 
 
 
 
class samolet
{
private: int i,j,k;
public: void zad();
};
/********************конструкторы*******************************/
 
point::point(int a1,int b1)
{x=a1;y=b1;}
 
circle::circle (int a1,int b1,int c) : point (a1,b1)
{x=a1;y=b1;r=c;}
 
TeloRukaGolova::TeloRukaGolova(int a1,int b1,int c):circle(a1,b1,c)
{x=a1;y=b1;r=c;}
 
parashut::parashut (int a1,int b1,int c):circle(a1,b1,c)
{x=a1;y=b1;r=c;}
 
/********************методы************************************/
void point::tochka(int a1,int b1)
{x=a1;y=b1;}
 
void circle::krug(int a1,int b1,int c)
{
x=a1;y=b1;r=c;
Form1->Image1->Canvas->Ellipse(x-r,y-r,x+r,y+r);
}
 
void TeloRukaGolova::kvadrat(int a1,int b1,int c)
{
x=a1;y=b1;r=c;
Form1->Image1->Canvas->Brush->Color=clGreen;
Form1->Image1->Canvas->Rectangle(x-r,y+r,x+r,y+r*4);
Form1->Image1->Canvas->Brush->Color=clSilver;
Form1->Image1->Canvas->Rectangle(x-r*2,y-r,x-r,y+r*2);
Form1->Image1->Canvas->Rectangle(x+r,y-r,x+r*2,y+r*2);
Form1->Image1->Canvas->Rectangle(x-r,y+r*4,x,y+r*7);
Form1->Image1->Canvas->Rectangle(x,y+r*4,x+r,y+r*7);
Form1->Image1->Canvas->Brush->Color=clWhite;
}
void samolet::zad()
{
i=int(Form1->Image1->Width/2);
j=140; k=20;
Form1->Image1->Canvas->Pen->Width=2;
Form1->Image1->Canvas->Ellipse(i-k*3,j-k*3,i+k*3,j+k*3);
Form1->Image1->Canvas->Pen->Width=3;
Form1->Image1->Canvas->Ellipse(i-k*6,j,i-k*5,j+k);  //левый
Form1->Image1->Canvas->Ellipse(i+k*5,j,i+k*6,j+k);  //правый
Form1->Image1->Canvas->Pen->Width=5;
Form1->Image1->Canvas->MoveTo(i-k*3,j);
Form1->Image1->Canvas->LineTo(i-k*9,j);
Form1->Image1->Canvas->MoveTo(i+k*3,j);
Form1->Image1->Canvas->LineTo(i+k*9,j);
Form1->Image1->Canvas->MoveTo(i,j-k*3);
Form1->Image1->Canvas->LineTo(i,j-k*6);
Form1->Image1->Canvas->Pen->Width=1;
}
 
void parashut::myparashut (int a1,int b1,int c)
{x=a1;y=b1;r=c;
Form1->Image1->Canvas->MoveTo(x-r*2,y-r*3);
Form1->Image1->Canvas->LineTo(x-r,y-r);
Form1->Image1->Canvas->LineTo(x,y-r*3);
Form1->Image1->Canvas->LineTo(x+r,y-r);
Form1->Image1->Canvas->LineTo(x+r*2,y-r*3);
Form1->Image1->Canvas->LineTo(x-r*2,y-r*3);
Form1->Image1->Canvas->Pie(x-r*2,y-r*5,x+r*2,y-r,x+r*2,y-r*3,x-r*2,y-r*3);
}
 
void chelovek::parashutist(int a1,int b1,int c)
{
TeloRukaGolova t(0,0,0);
t.kvadrat(a1,b1,c);
circle y(0,0,0);
y.krug(a1,b1,c);
parashut u(0,0,0);
u.myparashut(a1,b1,c);
}
 
 
/*************************************************************/
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
chelovek q(0,0,0);
q.parashutist(50,150,20);
samolet o;
o.zad();
 
//Form1->Image1->Canvas->Brush->Color=clWhite;
//Form1->Image1->Canvas->Rectangle(0,0,Form1->Image1->Width,Form1->Image1->Height);
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2013, 06:04     Наследование Классов с++
Посмотрите здесь:

C++ Наследование классов
C++ Наследование классов
Наследование классов C++
C++ Наследование классов
Наследование классов в С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
09.01.2013, 08:35     Наследование Классов с++ #2
Цитата Сообщение от _Goodwin Посмотреть сообщение
В чом ошибка
Конструктор с тремя параметрами
C++
1
chelovek(int a1,int b1,int c)
объявлен, но нет его реализации.
_Goodwin
 Аватар для _Goodwin
7 / 7 / 2
Регистрация: 28.11.2012
Сообщений: 89
09.01.2013, 08:39  [ТС]     Наследование Классов с++ #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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <windows.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
/********************классы***************************/
class point
{public: int x,y;
public: point(int a1,int b1); void tochka(int a1,int b1);};
 
 
class circle:public point
{protected: int r;
public: circle (int a1,int b1,int c);  void krug (int a1,int b1,int c);};
 
 
class TeloRukaGolova:public circle
{public: TeloRukaGolova(int a1,int b1,int c);  void kvadrat(int a1,int b1,int c);};
 
 
class parashut: public circle
{
public: parashut (int a1,int b1,int c); void myparashut(int a1,int b1,int c);
};
 
 
class chelovek: public parashut, public TeloRukaGolova
{
public: int x2,y2,c2;
public: chelovek(int a1,int b1,int c); void parashutist(int a1,int b1,int c);
};
 
 
 
 
 
class samolet
{
private: int i,j,k;
public: void zad();
};
/********************конструкторы*******************************/
 
point::point(int a1,int b1)
{x=a1;y=b1;}
 
circle::circle (int a1,int b1,int c) : point (a1,b1)
{x=a1;y=b1;r=c;}
 
TeloRukaGolova::TeloRukaGolova(int a1,int b1,int c):circle(a1,b1,c)
{x=a1;y=b1;r=c;}
 
parashut::parashut (int a1,int b1,int c):circle(a1,b1,c)
{x=a1;y=b1;r=c;}
 
/*chelovek::chelovek(int a1,int b1,int c)
(x2=a1;y2=b1;c2=c;)   */
 
/********************методы************************************/
void point::tochka(int a1,int b1)
{x=a1;y=b1;}
 
void circle::krug(int a1,int b1,int c)
{
x=a1;y=b1;r=c;
Form1->Image1->Canvas->Ellipse(x-r,y-r,x+r,y+r);
}
 
void TeloRukaGolova::kvadrat(int a1,int b1,int c)
{
x=a1;y=b1;r=c;
Form1->Image1->Canvas->Brush->Color=clOlive;
Form1->Image1->Canvas->Rectangle(x-r,y+r,x+r,y+r*4);
Form1->Image1->Canvas->Brush->Color=clSilver;
Form1->Image1->Canvas->Rectangle(x-r*2,y-r,x-r,y+r*2);
Form1->Image1->Canvas->Rectangle(x+r,y-r,x+r*2,y+r*2);
Form1->Image1->Canvas->Rectangle(x-r,y+r*4,x,y+r*7);
Form1->Image1->Canvas->Rectangle(x,y+r*4,x+r,y+r*7);
Form1->Image1->Canvas->Brush->Color=clWhite;
}
 
void parashut::myparashut (int a1,int b1,int c)
{x=a1;y=b1;r=c;
Form1->Image1->Canvas->MoveTo(x-r*2,y-r*3);
Form1->Image1->Canvas->LineTo(x-r,y-r);
Form1->Image1->Canvas->LineTo(x,y-r*3);
Form1->Image1->Canvas->LineTo(x+r,y-r);
Form1->Image1->Canvas->LineTo(x+r*2,y-r*3);
Form1->Image1->Canvas->LineTo(x-r*2,y-r*3);
Form1->Image1->Canvas->Pie(x-r*2,y-r*5,x+r*2,y-r,x+r*2,y-r*3,x-r*2,y-r*3);
}
 /*
void chelovek::parashutist(int a1,int b1,int c)
{x2=a1;y2=b1;c2=c;
 
TeloRukaGolova t(0,0,0);
t.kvadrat(x2,y2,c2);
circle y(0,0,0);
y.krug(x2,y2,c2);
parashut u(0,0,0);
u.myparashut(x2,y2,c2);}
 
 
 
 chelovek q(0,0,0);
q.parashutist(50,150,20);   */
 
/*************************************************************/
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Timer1->Enabled=true;
s=rand() %3 + 3;
w=rand()%1000+150;
 
//Form1->Image1->Canvas->Brush->Color=clWhite;
//Form1->Image1->Canvas->Rectangle(0,0,Form1->Image1->Width,Form1->Image1->Height);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
//Form1->Image1->Canvas->Brush->Color=clWhite;
Form1->Image1->Canvas->Rectangle(0,0,Form1->Image1->Width,Form1->Image1->Height);
samolet o;
o.zad();
TeloRukaGolova t(0,0,0);
t.kvadrat(w,l=l+s,20);
circle y(0,0,0);
y.krug(w,l=l+s,20);
parashut u(0,0,0);
u.myparashut(w,l=l+s,20);
 
}
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.01.2013, 09:58     Наследование Классов с++ #4
ну так читайте ошибки и пытайтесь понять, что они означают.
по делу: класс человек - наследник от двух других классов, у которых нет дефолтных конструкторов. поэтому в конструкторе человека в списке инициализации нужно позвать конструкторы базовых классов с нужными аргументами.

вообще, иерархия завабная получается.
человек - наследник от круга, от парашута (который тоже наследник от круга) и от ТелоРукаГолова (который тоже наследник от круга). А все круги - наследники от точки.
Yandex
Объявления
09.01.2013, 09:58     Наследование Классов с++
Ответ Создать тему
Опции темы

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