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

Как правильно вызывать функцию объекта из другой функции того же объекта? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из односвязного списка двухсвязный http://www.cyberforum.ru/cpp-beginners/thread400818.html
Есть Класс который имеет интерфейс АТД который включает методы для добавления, удаления, поиска элементов в соответствии с логикой работы структуры данных. Здесь структура Данных - циклический односвязный список Мне нужна реализовать двусвязный список с теми же методами. Как это сделать? class Clist { private: struct listitem {
C++ часто встречаемое слово В входном файле нужно найти одно или несколько наиболее часто встречаемых слова. программа довольно часто встречается, может у кого есть исходник? http://www.cyberforum.ru/cpp-beginners/thread400816.html
Как усовершенствовать программу? C++
Доброго времени суток! Начал изучать с++,написал простенькую прогу чтобы попрактиковаться,хотелось бы узнать как можно ещё более усовершенствовать прогу или усложнить немного? Программа вычисляет максимальное и минимальное число,причём пользователь может выбирать сколько чисел он хочет сравнить и показывает какие числа он вводил. #include<iostream.h> #include<conio.h>
C++ Ввод функций с клавиатуры...
:wall:Как можно в С/С++ вводить функцию с клавиатуры и потом что бы можно было считать значение с этой функцией.....Например функция y=sin(x)*cos(x) y=...наша функция с клавиатуры Благодарен всем кто откликнется.........:)
C++ Чтение чисел из файла, содержащего концевые пробелы и переносы строк. http://www.cyberforum.ru/cpp-beginners/thread400802.html
Здравствуйте! Помогите, пожалуйста, разобраться со следующей задачей. В текстовом файле содержатся целые числа, разделенные произвольным количеством пробелов и переносов строк. Нужно эти числа из файла занести в стек. Написал такой код: CStack stck; int n; FILE * fRead; fRead = fopen("e:\\test.txt","rt");
C++ Преобразование типов. Дружественные функции Создать класс комплексных чисел. Определить перегруженную функцию, возвращающую максимальный из двух аргументов. Функция не является членом класса комплексных чисел. Перегруженные функции имеют аргументы типа int, double, complex. Тело перегруженных функций должны быть одинаковыми. Создать два класса вектор (float *) и матрица (float **). Определить конструкторы - по умолчанию, с параметром, для... подробнее

Показать сообщение отдельно
Negent
 Аватар для Negent
9 / 9 / 1
Регистрация: 01.11.2011
Сообщений: 21
07.12.2011, 02:39     Как правильно вызывать функцию объекта из другой функции того же объекта?
Доброго дня и ночи, уважаемые программисты!
Существует некоторая проблема, на которую я наткнулся, решая задачу по программированию из учебника Дейтел/Дейтел. Суть задачи такова: имеется объект, содержащий данные клиента банка, вы редактируете его данные: имя владельца, номер счёта, баланс, траты и вычисляется ваш текущий баланс и максимальный размер кредита. Просто написав объект и редактируя его атрибуты я добился успеха. Но вот решил изменить несколько задачу, введя функцию аутентификации. См. ниже.
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
void ClassName::authentication ()
        {
            int tempPass;
            int password = 1234;
            int pin = 4321;
            cout<<"Procedure authentication!\n"
                <<"Please enter password ("<<password<<"): ";
            cin>>tempPass;
            if (tempPass == password)
                {
                    cout<<"You can enter information\n";
                    ClassName::setData ();
                }
            if (tempPass == pin)
                {
                    cout<<"You can get information\n";
                    ClassName::getData ();
                }
            else
                {
                    cout<<"Sorry, you not passed authentication...\n"
                        <<"Please, run program again!\n";
                }
        }
В зависимости от введённого пароля будет вызываться функция редактирования данных (администраторский пароль) или функция выдачи результата (пользовательский pin-код).

Привожу текст всех трёх файлов, составляющих программу на C/C++:

Файл, содержащий описания функций:
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
#include "stdafx.h"
#include "BankClass.h"
 
#include <iostream>
#include <iomanip>
 
#include <string>
 
using namespace std;
 
    ClassName::ClassName ()
        {
            nameOfUser = 'anonymous';
            accountNumber = 0000;
            initialBalance = 0;
            sumIncome = 0;
            sumExpense = 0;
            currentBalance = 0;
            creditLimit = 100;
            maximumSum = 0;
        }
    void ClassName::authentication ()
        {
            int tempPass;
            int password = 1234;
            int pin = 4321;
            cout<<"Procedure authentication!\n"
                <<"Please enter password ("<<password<<"): ";
            cin>>tempPass;
            if (tempPass == password)
                {
                    cout<<"You can enter information\n";
                    ClassName::setData ();
                }
            if (tempPass == pin)
                {
                    cout<<"You can get information\n";
                    ClassName::getData ();
                }
            else
                {
                    cout<<"Sorry, you not passed authentication...\n"
                        <<"Please, run program again!\n";
                }
        }
    void ClassName::setData ()
        {
            cout<<"Name: ?\b";
            getline (cin, nameOfUser);
            cout<<"Number of account: ?\b";
            cin>>accountNumber;
            cout<<"Initial balance: ?\b";
            cin>>initialBalance;
            cout<<"Income sum: ?\b";
            cin>>sumIncome;
            cout<<"Expense sum: ?\b";
            cin>>sumExpense;
        }
    void ClassName::getData ()
        {
            cout<<"Name: "<<nameOfUser<<endl;
            cout<<"Number of account: "<<accountNumber<<endl;
            cout<<"Initial balance: "<<initialBalance<<endl;
            cout<<"Income sum: "<<sumIncome<<endl;
            cout<<"Expense sum: "<<sumExpense<<endl;
            currentBalance = initialBalance + sumIncome - sumExpense;
            cout<<"Current balance: "<<currentBalance<<endl;
            maximumSum = currentBalance + creditLimit;
            cout<<"Maximum sum: "<<maximumSum<<endl;
        }
Файл, содержащий прототипы функций:
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
#include "stdafx.h"
 
#include <iostream>
#include <iomanip>
 
#include <string>
 
using namespace std;
 
class ClassName
    {
    public:
        ClassName::ClassName ();
        void ClassName::authentication (); //Функция проведения аутентификации
        void ClassName::setData (); //Функция установки значений
        void ClassName::getData (); //Функция получения и вычисления значений
    private:
        string ClassName::nameOfUser; //Имя владельца счёта
        int ClassName::accountNumber; //Номер счёта
        int ClassName::initialBalance; //Начальный баланс (денег на счету)
        int ClassName::sumIncome; //Количество входящих платежей
        int ClassName::sumExpense; //Количество исходящих платежей
        int ClassName::currentBalance; //Настоящий (текущий) баланс
        int ClassName::creditLimit; //Размер максимального кредита, при нулевом балансе на счету
        int ClassName::maximumSum; //Размер максимального кредита, при текущем балансе на счету
    };
Файл, содержащий исполняемый код (создание объекта, вызов конструктора и т.д.):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Bankomat.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "BankClass.h"
 
#include <iostream>
#include <iomanip>
 
#include <string>
 
using namespace std;
 
ClassName ClassObject;
 
void main ()
{
    cout<<"Hello, programmer!\n";
    ClassObject.authentication ();
    ClassObject.authentication ();
    cout<<"Done!\n";
    system ("pause");
}
Как я понял, моя ошибка заключается в неправильном вызове функций из другой функции того же объекта. Из конструктора можно производить вызов (проверено экспериментально). Подскажите, что мне делать: вызов только через конструктор или есть какая-то хитрость?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru