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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.77
Amazonka
0 / 0 / 0
Регистрация: 26.02.2009
Сообщений: 26
#1

Конструктор в C++ - C++

07.03.2009, 03:03. Просмотров 4257. Ответов 14
Метки нет (Все метки)

Помогите, пожалуйста, разобраться с задачей. Дано: создать программу используя конструктор, деструктор, классы с наследованием. Я написала, но программа не идёт, помогите разобраться в чём дело.
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
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <string>
using namespace std;
 
class Device
{
private:
int    weight;
public :
int w;
void set(int weight)
{
this ->weight=w;
}
int get()
{
     return this->w;
}
};
 
class Transport:public Device
{
private:
  int    v;      
 
public :
int speed;       
void set (int speed) 
{
  Device::  set(w);  
this -> speed=v;
}    
int get()
{return this->v;
}
};
 
 
class Car:public Transport
{
private:
      char m;     
  char* model;      
public: 
        Car()
{   
    
     this ->model=char*m;
} 
void set (int w,int v, char* model)
{
      Transport::set(w,v);
      
}      
int get( int w,int v, char* model)
{return this->m;
}
~Car()
};
 
  
int main()
{
Device d;
Transport t;
Car c;
d.get(44);
t.get(43);
c.get(232);
system ("PAUSE");
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2009, 03:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструктор в C++ (C++):

Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования - C++
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Класс...

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) - C++
class Test { int i; public: void test(int i) { this -&gt; i = i; } }; Конструктор Test::Test всегда вызывается...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром? - C++
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &lt;math.h&gt; #include &lt;algorithm&gt; using...

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно? - C++
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

14
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
07.03.2009, 11:33 #2
C++
1
2
3
4
void set(int weight)
{
this ->weight=w;
}
поменяй на
C++
1
2
3
4
void set(int weight)
{
w=weight;
}
операция присвоения идет справа налево. и посмотри другие методы.

Добавлено через 4 минуты 16 секунд
this в твоем коде не нужен, а если ты его используешь то надо звоздочку ставить т.к. это указатель
0
ISergey
Maniac
Эксперт С++
1383 / 894 / 54
Регистрация: 02.01.2009
Сообщений: 2,686
Записей в блоге: 1
07.03.2009, 12:24 #3
Цитата Сообщение от Бартимеус Посмотреть сообщение
this в твоем коде не нужен, а если ты его используешь то надо звоздочку ставить т.к. это указатель
C++
1
2
3
4
5
6
7
8
9
10
11
class Employ
{
public:
    void foo(int other)
    {
        this->data = other;
        (*this).data = other;
    }
private:
    int data;
};
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
07.03.2009, 12:33 #4
Согласен. Был не прав
Цитата Сообщение от Бартимеус Посмотреть сообщение
void set(int weight)
{this ->weight=w;}

поменяй на

void set(int weight)
{w=weight;}

операция присвоения идет справа налево
остается в силе
0
Amazonka
0 / 0 / 0
Регистрация: 26.02.2009
Сообщений: 26
07.03.2009, 12:36  [ТС] #5
Спасибо, исправила(убрала this заменила его присваиванием), но всё равно не работает.
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
07.03.2009, 12:38 #6
так пиши ошибки

Добавлено через 1 минуту 19 секунд
и код исправленный вывесить не забудь
0
Amazonka
0 / 0 / 0
Регистрация: 26.02.2009
Сообщений: 26
07.03.2009, 12:42  [ТС] #7
Вот исправленный код:
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
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <string>
using namespace std;
 
class Device
{
private:
int    weight;
public :
int w;
void set(int weight)
{
w=weight;
}
int get()
{
     return this->w;
}
 
};
 
class Transport:public Device
{
private:
  int    v;      
 
public :
int speed;       
void set (int speed) 
{
  Device::  set(w);  
v=speed;
}    
int get()
{return this->v;
}
};
 
 
class Car:public Transport
{
private:
      char m;     
  char* model;      
public: 
        Car()
     {   
    
     m=model;
} 
void set (int w,int v, char* model)
{
      Transport::set(w,v);
      
}      
int get( int w,int v, char* model)
{return this->m;
}
~Car()
};
 
int main()
{
Device d;
Transport t;
Car c;
d.get(44);
t.get(43);
c.get(232);
system ("PAUSE");
return 0;
}
Добавлено через 1 минуту 1 секунду
И вот ошибки:
1>------ Build started: Project: машина, Configuration: Debug Win32 ------
1>Compiling...
1>hjkh.cpp
1>.\hjkh.cpp(62) : error C2143: syntax error : missing ';' before '}'
1>.\hjkh.cpp(51) : error C2440: '=' : cannot convert from 'char *' to 'char'
1> There is no context in which this conversion is possible
1>.\hjkh.cpp(55) : error C2660: 'Transport::set' : function does not take 2 arguments
1>.\hjkh.cpp(69) : error C2660: 'Device::get' : function does not take 1 arguments
1>.\hjkh.cpp(70) : error C2660: 'Transport::get' : function does not take 1 arguments
1>.\hjkh.cpp(71) : error C2660: 'Car::get' : function does not take 1 arguments
1>машина - 6 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
07.03.2009, 12:44 #8
а теперь сделай это кодом)
0
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
07.03.2009, 12:57 #9
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
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <string>
using namespace std;
 
class Device
{
private:
int weight;//это здесь зачем?
public :
int w;
void set(int weight)
{
w=weight;
}
int get()
{
return this->w;//return w;
}
 
};
 
class Transportublic Device
{
private:
int v;
 
public :
int speed;//опять же,зачем??
void set (int speed)
{
Device:: set(w);//w самой себе присваивается
v=speed;
}
int get()
{return this->v;//return v;
}
};
 
 
class Carublic Transport
{
private:
char m;
char* model;//где память выделяется
public:
Car()
{
 
m=model;//нельзя типу чар присвоить указатель,да и указатель непонятно куда указывает
}
void set (int w,int v, char* model)
{
Transport::set(w,v);//нет метода в Transport принимающего два аргумента
 
}
int get( int w,int v, char* model)
{return this->m;//return m;
}
~Car()// где тело деструктора?
};
 
int main()
{
Device d;
Transport t;
Car c;
d.get(44);
t.get(43);
c.get(232);
system ("PAUSE");
return 0;
}
Лучше переписать все заново
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
07.03.2009, 12:57 #10
точно
0
Amazonka
0 / 0 / 0
Регистрация: 26.02.2009
Сообщений: 26
07.03.2009, 16:28  [ТС] #11
Вот исправила, но всё равно не работает.
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
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <string>
using namespace std;
 
class Device
{
private:
int weight;
public :
int w;
void set(int weight)
{
w=weight;
}
int get()
{
     return w;
}
 
};
 
class Transport:public Device
{
private:
  int   v;      
 
public :
int speed;       
void set (int speed) 
{
v=speed;
}    
int get()
{return v;
}
};
 
 
class Car:public Transport
{
private:
  char* model;      
public: 
        Car()
     {   
    
   model = new char [50];
 
} 
void set (int w,int v, char* str)
{
      Transport::set(w);
      strcpy( model,str);
}      
char* get( )
{return model;
}
~Car()
{
delete[]model ;
}
};
 
int main()
{
Device a;
Transport b;
Car c;
a.set(44);
b.set(43);
c.set(23,45);
cout<<a.get();
cout<<b.get();
cout<<c.get();
system ("PAUSE");
return 0;
}
0
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
07.03.2009, 23:18 #12
Цитата Сообщение от Amazonka
Код
Device a;
Transport b;
Car c;
a.set(44);
b.set(43);
[b]c.set(23,45);[/b]
cout<<a.get();
cout<<b.get();
cout<<c.get();
system ("PAUSE");
return 0;
Вот, где выделено, по вашему, что вызывается ? Покажите, где у вас реализация этой функции.
0
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
07.03.2009, 23:41 #13
А нечего показывать. Реализации у вас нет
0
ISergey
Maniac
Эксперт С++
1383 / 894 / 54
Регистрация: 02.01.2009
Сообщений: 2,686
Записей в блоге: 1
08.03.2009, 02:59 #14
для начала читаем здесь, а потом рядом
0
Amazonka
0 / 0 / 0
Регистрация: 26.02.2009
Сообщений: 26
08.03.2009, 13:35  [ТС] #15
Ура!!! Я наконец-то с вашей помощью добила эту программу. Спасибо всем огромное, за ваши комментарии и желание мне помочь. Я ещё только учусь, это мои первые программы и даются они мне тяжело, далеко не всё понятно. Ещё раз огромное спасибо.
0
08.03.2009, 13:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2009, 13:35
Привет! Вот еще темы с ответами:

Конструктор производного класса требует конструктор предка - C++
Выдаёт вот такую вот ошибку: no matching function for call to 'Cube::Cube()' class Cube { protected: int magInt; bool...

Конструктор инициализации, конструктор копирования, деструктор - C++
Я сделал почти задание по перегрузке операторов. Осталось одно, тоесть три: конструктор инициализации, конструктор копирования, деструктор....

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Конструктор класса не видит конструктор по умолчанию другого класса - C++
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора по умолчанию, хотя он там, конечно, есть....


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

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

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