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

Непонятно что за ошибка. Классы. - C++

Восстановить пароль Регистрация
 
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
07.07.2011, 12:15     Непонятно что за ошибка. Классы. #1
Народ, гляньте кто может, для создания и выполнения второго объекта необходимо использовать указатель, а с ним у меня возникла ошибочка, пожалуйста, подправьте, а если сможете, то плиз и объясните какая у меня ошибка, заранее всем спасибо: senor:
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
#include <iostream.h>
#include <iomanip>
#include <conio.h>
#include <math.h>
#include <string.h>
 
class  Hexagonal_Prism 
{
 float R;
 float H;
 Hexagonal_Prism *prizm;
 
 
 double get_So()
         {return(3*sqrt(3.0/2)*R*R); }
 double get_Sb()
         {return(6*R*H);}
 double get_Sp()
         {return(2*get_So()+get_Sb());}
public:
Hexagonal_Prism(float rad = 0, float vys = 0)
 {
    prizm = new Hexagonal_Prism;
    R = rad;
    H = vys;
 }
 ~Hexagonal_Prism()
 {
    delete prizm;
 }
 
 void print_So(void)
 {
    cout << "S osn =  " << get_So();
 }
 void print_Sb()
 {
    cout << "S bok = " << get_Sb();
 }
void print_Sp()
 {
    cout << "S poln =  " << get_Sp();
 }
 
};
 
 int main()
 {
   float  rad, vys;
     rad = vys = 0;
     cout << "Vvedite Radius1 i Vysoty1: ";
     cin >> rad >> vys;
     Hexagonal_Prism prizm1(rad,vys);
     cout << "\nSchitaem... \n";
 
     prizm1.print_So();
     cout << "\n";
     prizm1.print_Sb();
     cout << "\n";
     prizm1.print_Sp();
     cout << "\n";
 
     cout << "Vvedite Radius2 i Vysoty2: ";
     cin >> rad >> vys;
     Hexagonal_Prism *prizm2(rad, vys);
     cout << "\nSchitaem... \n";
 
     prizm2->print_So();
     cout << "\n";
     prizm2->print_Sb();
     cout << "\n";
     prizm2->print_Sp();
     cout << "\n";
 
 
     getch();
 }
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2011, 12:15     Непонятно что за ошибка. Классы.
Посмотрите здесь:

Классы (что-то нетрудное) C++
C++ Арксинус числа выдаёт непонятно что
непонятно что не правильно C++
Непонятно где ошибка в программе C++
непонятно что выводит на печать C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
07.07.2011, 12:22     Непонятно что за ошибка. Классы. #2
C++
1
Hexagonal_Prism *prizm;
в тушке класса объявлена переменная класса о_О какэта

C++
1
prizm = new Hexagonal_Prism;
и вот разве можно так делать о_О
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.07.2011, 12:25     Непонятно что за ошибка. Классы. #3
co6ak, как по твоему организован связный список?

Цитата Сообщение от co6ak Посмотреть сообщение
в тушке класса объявлена переменная класса о_О какэта
не переменная, а указатель
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
07.07.2011, 12:26  [ТС]     Непонятно что за ошибка. Классы. #4
не понял, что?
Даже если Hexagonal_Prism *prizm; в паблик, тоже самое, если нетяжело исправь
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.07.2011, 12:27     Непонятно что за ошибка. Классы. #5
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
Hexagonal_Prism *prizm2(rad, vys);
C++
1
Hexagonal_Prism *prizm2 = new Hexagonal_Prism(rad, vys);
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
07.07.2011, 12:30     Непонятно что за ошибка. Классы. #6
компиль даже не доходит до этой строки ) его вышибает на prizm = new Hexagonal_Prism;
(по крайней мере у меня в VS Express 2010)
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
07.07.2011, 12:30  [ТС]     Непонятно что за ошибка. Классы. #7
Я реально туповат, ошибку понял, но куда ето чудо вставить
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.07.2011, 12:32     Непонятно что за ошибка. Классы. #8
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
Я реально туповат, ошибку понял, но куда ето чудо вставить
Я весь твой код не смотрел: он не подсвечен, плохо форматирован и, возможно, будет непонятен мне.
Я лишь прочитал твои слова:

Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
для создания и выполнения второго объекта необходимо использовать указатель, а с ним у меня возникла ошибочка
Ну я и посмотрел на создание твоего "второго" объекта. Оно в main() создается, если ты не знаешь

Вместо
C++
1
Hexagonal_Prism *prizm2(rad, vys);
вставь
C++
1
Hexagonal_Prism *prizm2 = new Hexagonal_Prism(rad, vys);
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
07.07.2011, 12:40  [ТС]     Непонятно что за ошибка. Классы. #9
Затупил, но все равно вопросик есть: по заданию надо такую чушь написать:
Введите закрытую переменную класса для хранения имени объекта. Выделение памяти для имени объекта (посредством оперетора new) и его инициализацию проводите в конструкторе, освобождение выделенной памяти (посредством оператора delete) - в деструкторе.
Вот я сетим добром и не разобрался, не работает в исходнике
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.07.2011, 12:42     Непонятно что за ошибка. Классы. #10
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
Введите закрытую переменную класса для хранения имени объекта. Выделение памяти для имени объекта (посредством оперетора new) и его инициализацию проводите в конструкторе, освобождение выделенной памяти (посредством оператора delete) - в деструкторе.
Вот я сетим добром и не разобрался, не работает в исходнике
нужно было не Hexagonal_Prism *prizm; в классе создавать,
а char* name;
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.07.2011, 12:44     Непонятно что за ошибка. Классы. #11
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
не работает в исходнике
Не работает потому, что ничего подобного у тебя там нет.
Указатель на класс не является "именем объекта".

Подождите, может кто-то напишет вам решение. Но это буду не я
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
07.07.2011, 12:47  [ТС]     Непонятно что за ошибка. Классы. #12
И толку?

Добавлено через 1 минуту
Монте-Кристо, плиз, мне не горит, когда сможешь, накатай, я только начал изучать си++
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.07.2011, 13:45     Непонятно что за ошибка. Классы. #13
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
#include <iostream>
#include <iomanip>
#include <math.h>
#include <string.h>
 
using namespace std;
 
 class Hexagonal_Prism {
     float radius;
     float height;
     char* name;
 public:
     Hexagonal_Prism(float rad = 0, float vys = 0, const char* name_ = "")
     {
         name = new char [strlen(name_) + 1];
         strcpy(name, name_);
         radius = rad;
         height = vys;
     }
     
     ~Hexagonal_Prism()
     {
         delete [] name;
     }
 
     float get_So() const
     {
         return 3.0f * sqrt(1.5f) * radius * radius; 
     }
 
     float get_Sb() const
     {
         return 6.0f * radius * height;
     }
 
     float get_Sp() const
     {
         return 2.0f * get_So() + get_Sb();
     }
 
     const char* get_name() const
     {
         return name;
     }
 };
 
 
 int main()
 {
     float rad = 0.0f, vys = 0.0f;
     cout << "Vvedite Radius1 i Vysoty1: ";
     cin >> rad >> vys;
     Hexagonal_Prism prizm1(rad, vys, "Vasya");
     cout << "\nSchitaem... \n"
          << "S osn = " << prizm1.get_So() << '\n'
          << "S bok = " << prizm1.get_Sb() << 'n'
          << "S poln = " << prizm1.get_Sp() << '\n'
          << "name = " << prizm1.get_name() << '\n';
 
     cout << "Vvedite Radius2 i Vysoty2: ";
     cin >> rad >> vys;
     Hexagonal_Prism* prizm2 = new Hexagonal_Prism(rad, vys, "Petya");
     cout << "\nSchitaem... \n"
          << "S osn = " << prizm2->get_So() << '\n'
          << "S bok = " << prizm2->get_Sb() << 'n'
          << "S poln = " << prizm2->get_Sp() << '\n'
          << "name = " << prizm2->get_name() << '\n';
     getchar();
     delete prizm2;
     return 0;
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2011, 13:50     Непонятно что за ошибка. Классы.
Еще ссылки по теме:

C++ Это обьект, переменная или что? Как то вовсе непонятно
Изучаю классы, что-то не выходит C++
Классы - что это? C++

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

Или воспользуйтесь поиском по форуму:
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
07.07.2011, 13:50  [ТС]     Непонятно что за ошибка. Классы. #14
Спасибо тебе, добрый человек)))))))))))))
Yandex
Объявления
07.07.2011, 13:50     Непонятно что за ошибка. Классы.
Ответ Создать тему
Опции темы

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