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

Исключение, как класс с полями-параметрами функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обеспечить контроль существования диапазона http://www.cyberforum.ru/cpp-beginners/thread1302320.html
Здравствуйте всем. Не могу исправить ошибки. Изначально код был написан Visual C++, никаких ошибок не было, но преподаватель сказал нужно на С++ в консоли сделать, после переделки появились ошибки,...
C++ Как выровнять столбики в ответе? #include <iostream.h> #include <math.h> #include <conio.h> double sum1(double x, double n); double sum2(double x, double eps); double term(double x, double k); double y(double x); double... http://www.cyberforum.ru/cpp-beginners/thread1302314.html
WinMain.cpp|57|undefined reference to `GUID_DEVCLASS_PROCESSOR C++
Раньше ProcessorClass=SetupDiGetClassDevs(&GUID_DEVCLASS_PROCESSOR, NULL, NULL, DIGCF_PRESENT); компилилась (в x86), начал новый проект x64, скопировал в него, перестала.
C++ Ввод данных с использованием стрелок на клавиатуре
Здравствуйте, такой вопрос: в задании указано, что для ввода одной из переменных должна быть возможность вводить ее значение, используя стрелки "Вверх" и "Вниз". То есть, к примеру, нажал на кнопку...
C++ Структура Студент http://www.cyberforum.ru/cpp-beginners/thread1302302.html
1. Используя ввод-вывод в стиле С создать файл и записать в него структурированные данные. 2. Вывести созданный файл на экран. 3. Удалить из файла данные в соответствии с вариантом. 4. Добавить в...
C++ Операция || и атрибут static 1 вопрос: if ((case1) || (case2)) ... Если case1 истина, будет дальше case2 проверяться? .. 2 вопрос: Есть функция, которая вызывается каждый раз при изменении окна, и перерисовывает графики... подробнее

Показать сообщение отдельно
marahyta
0 / 0 / 0
Регистрация: 09.11.2014
Сообщений: 1

Исключение, как класс с полями-параметрами функции - C++

16.11.2014, 19:44. Просмотров 183. Ответов 0
Метки (Все метки)

Здравствуйте.
Подскажите, как решить следующую проблему:
Мне нужно создать в функции объект-исключение как класс с полями параметрами, которые были переданы в функцию. Один из этих параметров является экземпляром другого класса. Как правильно скопировать значение этого экземпляра класса в поле создаваемого класса?

Функция:
C++
1
2
3
4
5
6
7
8
9
void function (Progression progression,int n)
{class_with_parameters e;  e.progression1(progression); e.n1=n; if (n<=-1) throw e;
double Sum;
double _denominator=denominator(progression);
if (_denominator==0.0) throw e; 
 
Sum=(progression.members[0]-progression.members[n]*_denominator)/(1-_denominator);
cout<<"Сумма равна "<<Sum<<endl;
}

Создаваемый класс:
C++
1
2
3
4
class class_with_parameters
{public: 
Progression progression1(Progression&);
int n1;};


Описание и конструкторы для класса:
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
class Progression
{
    double* members;
    public:
 
        friend istream &operator>>(istream &,Progression&);
        friend ostream &operator<<(ostream &,Progression&);
        friend double denominator(Progression);//throw();
        friend void function0 (Progression);
        friend void function (Progression, int);//throw();
        //friend void function2 (Progression, int);
        Progression();
        Progression(Progression&);
        ~Progression();
};
Progression::Progression()
{members=new double[::k]; 
int i=0;
while (i<::k)
{members[i]=0.0; i++;}
cout<<"Constructor colled"<<endl<<endl;
};
 
 
Progression::Progression(Progression& progression)
{
    members=new double[::k];
for( int i=0; i<::k; i++)
members[i]=progression.members[i];
 
 cout<<"Copy's constructor colled"<<endl;
};
 
Progression::~Progression()
{
    delete[]members; 
    cout<<"Destructor colled"<<endl<<endl;
};
Перегрузка ввода/вывода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
istream &operator>>(istream &t,Progression& progression1)
 { 
bool flag=0;
int l;
while (!flag)
{
cout<<"Введите члены прогрессии(окончание ввода завершите нулем): ";
int i=0;
while (true)
{   
    cin>>l; 
    if (i==::k) 
        if (l==0) {flag=1; break;} 
        else throw runtime_error("Ошибка runtime! Выход за границы");//{ cout<<"Превышение заданных границ!"<<endl; flag=0; break;} 
        progression1.members[i]=l;
        i++;
};
}
 
return t;
 }
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
int main()
{
setlocale(LC_ALL,"Rus");
    int n;
try
{
       cout<<"Введите количество членов прогрессии"<<endl;
       cin>>::k;
       if (::k==0) throw empty();
 
       Progression progression;
       cin>>progression;
       //cout<<progression;
    
       cout<<"Введите номер члена, до которого нужно посчитать сумму геометрической прогрессии "<<endl;
       cin>>n;
       if (n==1) function0(progression);
       else 
                 function(progression, n-1);
 
}
catch(empty){  cerr<<"Предлагаемое значение невозможно! /ошибка/"<<endl;  }// пустой класс
catch(const exception &e) {  cerr<<e.what()<<endl;} // стандартное исключение
catch(delusion) {cerr<<"Вы ввели не геометрическую прогрессию! /ошибка/"<<endl;}// пустой класс
catch(class_with_parameters e){}//собственный класс ?????
 
 
 
    cin.get();
   _getch();
   return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru