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

Работает ли указатель на базовый класс исключения, когда попадает в блок catch - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Алгоритм поиска Эйлерового пути, не используя матрицу смежности или инцидентности http://www.cyberforum.ru/cpp-beginners/thread1238944.html
Есть граф с множеством вершын Х = { 1, 2, 3, 4, 5} формула |x1 - x2| = 1 то есть если модуль разницы двух вершин 1, то они смежны Пример |1-2| = 1 - вершыны 1 и 2 смежны, |3-5| = 2 - вершыны 3 и 5 НЕсмежны, |5-4| = 1 - 5 и 4 смежны, |4-5| = 1 - 5 и 4 смежны
C++ Чтение/запись в файл с использованием многопоточности Доброго времени суток! Хочу решить следующую задачу: Есть большой бинарный файл (несколько гигабайт к примеру). Нужно разбить этот файл на части и записать в другой файл хэши этих частей, используя многопоточность (многопроцессорность). С ней я никогда не работал. Читал про процессы, потоки и т.д. Но никогда не использовал в программах. Предполагаю сделать так #include "header.h" using... http://www.cyberforum.ru/cpp-beginners/thread1238938.html
C++ Скиньте литературу по спискам в C++
Скиньте литературу по спискам в С++, НО которая расчитана на полного чайника (т.е. где все будет до мелчайших подробностей расписано). Может кто учился по такой, может знает.
Как создать фигуры для тетриса? C++
Привет всем! Захотел написать простенькую игру и решил начать с тетриса. Пишу в visual studio 2013 c++. Как и всегда появляются проблемы: Нарисовал текстурки для фигур, но я не знаю как из текстур сделать фигуры. P.s. Текстуры прикрепил к посту.
C++ Указатель на не объявленную структуру http://www.cyberforum.ru/cpp-beginners/thread1238862.html
Допустим я описал структуру. Объявил указатель на эту структуру. struct MyStruct{ char ch; int i; }; std::cout<<sizeof(MyStruct); MyStruct * pMyStruct; Из за выравнивания размер структуры 8 байт, хотя данных там на пять байт.
C++ Если память для объекта выделяется динамически (строка 33), сортировка sort не работает Если память для объекта выделяется динамически (строка 33), сортировка sort не работает, если память не выделять, все работает. Как избежать проблему? #include <iostream> #include <list> #include <time.h> using namespace std; class Type { public: подробнее

Показать сообщение отдельно
Gwini
10 / 10 / 3
Регистрация: 08.03.2014
Сообщений: 70
06.08.2014, 04:39  [ТС]     Работает ли указатель на базовый класс исключения, когда попадает в блок catch
Немного другое.
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
// exc_mean.h  -- exception classes for hmean(), gmean()
#include <iostream>
 
class base_excep: public std::logic_error 
{
private:
    double a;
    double b;
public:
    base_excep(double val1 = 0, double val2 = 0, const char* s = "Unknow exception") :a(val1), b(val2), logic_error(s) {}
    virtual ~base_excep() {}
    void what_arg() const { std::cout << "Arguments: " << a << " " << b << std::endl; }
};
 
class bad_hmean: public base_excep
{
private:
    const char* str;
public:
    bad_hmean(double val1 = 0, double val2 = 0, const char* s = "Function: hmean(). Invalid arguments: a = -b\n") : str(s), base_excep(val1, val2, s) {}
};
 
class bad_gmean :public base_excep
{
private:
    const char* str;
public:
    bad_gmean(double val1 = 0, double val2 = 0, const char* s = "Funtion: gmean(). Arguments should be >= 0\n") : str(s), base_excep(val1, val2, s) {}
};
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
//error4.cpp – using exception classes
#include <iostream>
#include <cmath> // or math.h, unix users may need -lm flag
#include "exc_mean.h"
// function prototypes
double hmean(double a, double b);
double gmean(double a, double b);
int main()
{
    using std::cout;
    using std::cin;
    using std::endl;
    
    double x, y, z;
 
    cout << "Enter two numbers: ";
    while (cin >> x >> y)
    {
        try {                  // start of try block
            z = hmean(x,y);
            cout << "Harmonic mean of " << x << " and " << y
                << " is " << z << endl;
            cout << "Geometric mean of " << x << " and " << y
                << " is " << gmean(x,y) << endl;
            cout << "Enter next set of numbers <q to quit>: ";
        }// end of try block               
        catch (base_excep* excep) 
        {
            cout << excep->what();
            excep->what_arg();
            cout << "Sorry, you don't get to play any more.\n";
            break;
        } // end of catch block
    }
    cout << "Bye!\n";
    return 0;
}
 
double hmean(double a, double b)
{
    if (a == -b)
        throw &bad_hmean(a,b);
    return 2.0 * a * b / (a + b);
}
 
double gmean(double a, double b)
{
    if (a < 0 || b < 0)
        throw &bad_gmean(a,b);
    return std::sqrt(a * b); 
}
Тут вызывается what() со строкой определенной в logic_eror. В случае ссылки все хорошо.
 
Текущее время: 06:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru