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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.77
Amazonka
0 / 0 / 0
Регистрация: 26.02.2009
Сообщений: 26
07.03.2009, 03:03     Конструктор в C++ #1
Помогите, пожалуйста, разобраться с задачей. Дано: создать программу используя конструктор, деструктор, классы с наследованием. Я написала, но программа не идёт, помогите разобраться в чём дело.
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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2009, 03:03     Конструктор в C++
Посмотрите здесь:

C++ Конструктор
Конструктор C++
Конструктор C++
Конструктор C++
C++ Конструктор
Конструктор C++
C++ Конструктор new
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Бартимеус
 Аватар для Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
07.03.2009, 11:33     Конструктор в C++ #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 в твоем коде не нужен, а если ты его используешь то надо звоздочку ставить т.к. это указатель
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
07.03.2009, 12:24     Конструктор в C++ #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;
};
Бартимеус
 Аватар для Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
07.03.2009, 12:33     Конструктор в C++ #4
Согласен. Был не прав
Цитата Сообщение от Бартимеус Посмотреть сообщение
void set(int weight)
{this ->weight=w;}

поменяй на

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

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

Добавлено через 1 минуту 19 секунд
и код исправленный вывесить не забудь
Amazonka
0 / 0 / 0
Регистрация: 26.02.2009
Сообщений: 26
07.03.2009, 12:42  [ТС]     Конструктор в C++ #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 ==========
Бартимеус
 Аватар для Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
07.03.2009, 12:44     Конструктор в C++ #8
а теперь сделай это кодом)
Humanitis
 Аватар для Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
07.03.2009, 12:57     Конструктор в C++ #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;
}
Лучше переписать все заново
Бартимеус
 Аватар для Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
07.03.2009, 12:57     Конструктор в C++ #10
точно
Amazonka
0 / 0 / 0
Регистрация: 26.02.2009
Сообщений: 26
07.03.2009, 16:28  [ТС]     Конструктор в C++ #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;
}
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
07.03.2009, 23:18     Конструктор в C++ #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;
Вот, где выделено, по вашему, что вызывается ? Покажите, где у вас реализация этой функции.
Humanitis
 Аватар для Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
07.03.2009, 23:41     Конструктор в C++ #13
А нечего показывать. Реализации у вас нет
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
08.03.2009, 02:59     Конструктор в C++ #14
для начала читаем здесь, а потом рядом
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2009, 13:35     Конструктор в C++
Еще ссылки по теме:

C++ this и конструктор
C++ Конструктор
C++ Конструктор
Конструктор C++
Конструктор C++

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

Или воспользуйтесь поиском по форуму:
Amazonka
0 / 0 / 0
Регистрация: 26.02.2009
Сообщений: 26
08.03.2009, 13:35  [ТС]     Конструктор в C++ #15
Ура!!! Я наконец-то с вашей помощью добила эту программу. Спасибо всем огромное, за ваши комментарии и желание мне помочь. Я ещё только учусь, это мои первые программы и даются они мне тяжело, далеко не всё понятно. Ещё раз огромное спасибо.
Yandex
Объявления
08.03.2009, 13:35     Конструктор в C++
Ответ Создать тему
Опции темы

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