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

Исключения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Абстракция данных и решение задач на C++ ? http://www.cyberforum.ru/cpp-beginners/thread385344.html
Как понять Абстракция данных и решение задач на C++ ? void sendRequest(Request request) { if (server->error() != Server::errorOk) { // handle } if (request.userName.empty())
C++ Найти последние ти числа, кратные четырём в диапазоне от A до B Вот, что пришло в голову: #include <stdio.h> #include <locale.h> const int N=100; void Last3Kratno4(int a, int b, int c) { int m=0; for (int i=b; i>a; i--) { c=i; http://www.cyberforum.ru/cpp-beginners/thread385340.html
C++ написать задачу по работе с двунаправленным списком
Даны натуральное число n, целые числа a1,a2,...,an.Выяснить, имеются ли среди чисел совпадающие. программу надо написать используя стандартную библиотеку шаблонов STL и класс list по работе с двунаправленным списком помагайте это срочно
C++ Немогу понять как реализовать
Всем привет!! У меня сложилась такая непонятная ситуация ! У меня есть класс также на форме1 есть кнопка как реализовать так чтобы по нажатию на данную кнопку создавался новый объект моего класса Если можете напишите код для кнопки или объясните как это можно реализовать, Заранее очень благодарен!!
C++ В чем ошибки? http://www.cyberforum.ru/cpp-beginners/thread385333.html
{#define M 15 int k, b; int i, j; ... /*ввод b */ while(j<j) if (i>j) then b--; }
C++ Напечатать в алфавитном порядке все слова из заданной строки, имеющие заданную длину n. на C++ Дана строка. Напечатать в алфавитном порядке все слова из заданной строки, имеющие заданную длину n. подробнее

Показать сообщение отдельно
ramarren14
2 / 2 / 0
Регистрация: 14.07.2011
Сообщений: 49

Исключения - C++

16.11.2011, 19:07. Просмотров 553. Ответов 9
Метки (Все метки)

Упражняюсь в программировании. Написал абстрактный класс Shape, от которого наследуются Quadr и Treyg. Создал класс исключения Exeption, причем если в нем не описывать переменные члены, а просто в блоке catsh написать cout<<" error ", то сообщение выводится на экран. Но как только описал переменную itsVal и вызвал метод в catsh, cразу выдает, что функции недоступны.

Вот класс Quadr:
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
#ifndef QUADR_H
#define QUADR_H
#include "Point.h"
#include "Shapex.h"
 
class Exeption
{
    Exeption():itsValue(0) {}
    Exeption(int val):itsValue(val) {}
    ~Exeption() {}
    int GetValue() const {return itsValue;}
protected:
    int itsValue;
};
 
class Quadr:public Shapex
{
public:
    friend class Point;
    Quadr();
    Quadr(double,double,double,double,double,double,double,double);
    virtual ~Quadr();
    double LenDiagOne() const;
    double LenDiagTwo() const;
    virtual double GetArea() const;
    virtual double GetPer() const;
private:
    Point a,b,c,d;
};
 
#endif
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
#include "Quadr.h"
#include "Point.h"
#include<iostream>
 
Quadr::Quadr():
a(0,0),
b(0,0),
c(0,0),
d(0,0)
{}
 
Quadr::Quadr(double i,double u,double y,double t,double r,double e,double w,double q):
a(i,u),
b(y,t),
c(r,e),
d(w,q)
{}
 
Quadr::~Quadr()
{}
 
double Quadr::LenDiagOne() const
{
    return a.Len(c);
}
 
double Quadr::LenDiagTwo() const
{
    return b.Len(d);
}
 
double Quadr::GetArea() const
{
    double p_half;
    double area_tr_one; 
    double area_tr_two;
    p_half=0.5*(a.Len(b)+b.Len(c)+c.Len(a));
    area_tr_one=sqrt(p_half*(p_half-a.Len(b))*(p_half-a.Len(d))*(p_half-b.Len(d)));
    area_tr_two=sqrt(p_half*(p_half-b.Len(c))*(p_half-c.Len(d))*(p_half-b.Len(d)));
    return area_tr_one+area_tr_two;
}
 
double Quadr::GetPer() const
{
    if ((a.Len(b)+b.Len(c)+c.Len(d)+d.Len(a))==0)
    throw Exeption();
    return (a.Len(b)+b.Len(c)+c.Len(d)+d.Len(a));
}
Ну и main:
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
#include<iostream>
#include "Point.h"
#include "Quadr.h"
#include "Treyg.h"
using namespace std;
 
int main()
{
    Shapex* Ptr=0;
    double (Shapex::*PtrFun) () const=0;
    int choice_one=0;
    int choice_two=0;
 
    cout<<"enter need shape (1)-Quadr (2)-Treyg:";
 
    cin>>choice_one;
    switch(choice_one)
    {
        case 1: 
            Ptr=new Quadr(0,0,0,0,0,0,0,0); 
            break;
        case 2:
            Ptr=new Treyg(0,0,0,1,1,0); 
            break;
        default: cout<<" error ";
    }
 
    cout<<"choose function (1)-Area (2)-Perimetr";
 
    cin>>choice_two;
    switch(choice_two)
    {
    case 1:
        PtrFun=&Shapex::GetArea; break;
    case 2:
        PtrFun=&Shapex::GetPer; break;
    default: cout<<" error ";
    }
 
    try
    {
    cout<<(Ptr->*PtrFun) ();
    }
 
    catch(const Exeption & the_Exept)
    {
        cout<<the_Exept.GetValue();
    }
 
    delete Ptr;
    Ptr=0;
    return 0;
}
Кто может указать на ошибки.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru