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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_Goodwin
8 / 8 / 3
Регистрация: 28.11.2012
Сообщений: 93
#1

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

09.01.2013, 06:04. Просмотров 498. Ответов 3
Метки нет (Все метки)

при компицяции выдаёт 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);
}
//---------------------------------------------------------------------------
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2013, 06:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование Классов с++ (C++):

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

Наследование классов. Копирование производных классов - C++
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем класс А { int mA; ...

Наследование классов - C++
Задание: Создать класс базовый класс «квадрат». Элементы класса (поля имеют статус доступа protected): поле, задающее длину...

Наследование классов - C++
Собирал программу по частям, подскажите как исправить ошибки. #include &lt;iostream&gt; #include &lt;conio.h&gt; class Vehicle //...

Наследование классов - C++
Здравствуйте! Вот написан мой код ниже. Я когда пытаюсь ввести &quot;What give animal:&quot; идёт прекращение работы. Не понимаю почему. Помогите...

наследование классов - C++
Здарова, народ! :D Вот сижу и пытаюсь сделать задание из книги по которой &quot;учимся программировать в универе&quot;, а там такой поворот...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
09.01.2013, 08:35 #2
Цитата Сообщение от _Goodwin Посмотреть сообщение
В чом ошибка
Конструктор с тремя параметрами
C++
1
chelovek(int a1,int b1,int c)
объявлен, но нет его реализации.
0
_Goodwin
8 / 8 / 3
Регистрация: 28.11.2012
Сообщений: 93
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);
 
}
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.01.2013, 09:58 #4
ну так читайте ошибки и пытайтесь понять, что они означают.
по делу: класс человек - наследник от двух других классов, у которых нет дефолтных конструкторов. поэтому в конструкторе человека в списке инициализации нужно позвать конструкторы базовых классов с нужными аргументами.

вообще, иерархия завабная получается.
человек - наследник от круга, от парашута (который тоже наследник от круга) и от ТелоРукаГолова (который тоже наследник от круга). А все круги - наследники от точки.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2013, 09:58
Привет! Вот еще темы с ответами:

наследование классов - C++
Народ, всем приветик! Уже 3 день сижу над етой темой, не получается задание, вчера выбрасывал на форум исходник, но в конце концов сделал...

наследование классов - C++
Помогите пожалуйста разобраться с задачей Создайте базу данных деканата. В ней фиксируются данные о 2 категориях студентах: студенты...

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

Наследование классов - C++
Здравствуйте, начал изучать наследование классов и не могу понять как ведут себя конструкторы с параметром. Вот код, но он печатает на...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.01.2013, 09:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru