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

Классы, наследование - C++

Восстановить пароль Регистрация
 
 
Br8k
1 / 1 / 0
Регистрация: 22.10.2012
Сообщений: 42
22.10.2012, 18:37     Классы, наследование #1
Собственно, задача поставлена так, в файле N логинов и паролей, которые считываются и проверяются с теми что введены с клавиатуры.
Проблема: застрял на сравнение, не пойму что происходить..
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "iostream"
#include "cstdio"
#include "cstdlib"
#include "conio.h"
#include "string"
 
#define N 2
using namespace std;
 
class system
{
private:
    char name[20];
    int password;
public:
    void set_name();
    char* get_name();
    void set_pas();
    int get_pas();
};
class chek : public system
{
private:
    char cname[20];
    int cpassword;
public:
    void File(FILE*);
    void chek_name();
    void chek_pas();
};
 
 
void main()
{
    class system s;
    chek c;
    FILE* fp;
    fp = fopen("D:\\memb.txt","r");
    if(fp==NULL)
    {
        cout<<"Error."<<endl;
        exit(1);
    }   
    cout<<"\t\tWELCOME IN KLIM-SYSTEM\n\n"<<endl;
    cout<<"Enter login: ";
    s.set_name();   
    c.chek_name();
    cout<<"Enter password: ";
    s.set_pas();
    c.chek_pas();
    fclose(fp);
}
 
void system::set_name()
{
    cin>>name;
}
char* system::get_name()
{
    return name;
}
void system::set_pas()
{
    cin>>password;
}
int system::get_pas()
{
    return password;
}
 
void chek::File(FILE* fp)
{
    fscanf(fp,"%s",cname);
    fscanf(fp,"%i",cpassword);
}
void chek::chek_name()
{
    class system s;
    chek c[N];
        
    for(int i=0; i<N; i++)
    {
        if(c[i].cname==s.get_name())
        {
            cout<<"lol"<<endl;
            break;
        }
        else
        {
            cout<<"lol2"<<endl;
            exit(1);
        }
    }
}
void chek::chek_pas()
{
    class system s;
    chek c[N];
    
    for(int i=0; i<N; i++)
    {
        if(c[i].cpassword==s.get_pas())
        {
            cout<<"lol"<<endl;
            break;
        }
        else
        {
            cout<<"lol2"<<endl;
            exit(1);
        }
    }
}
собственно, наведите на путь истенный.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2012, 18:37     Классы, наследование
Посмотрите здесь:

Классы. Наследование C++
Классы, наследование C++
Классы и их наследование C++
Классы и наследование C++
C++ Классы и наследование
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Br8k
1 / 1 / 0
Регистрация: 22.10.2012
Сообщений: 42
22.10.2012, 22:57  [ТС]     Классы, наследование #21
Цитата Сообщение от Br8k Посмотреть сообщение
p.SetName();
вызвана в функции мейн, до:

Цитата Сообщение от Br8k Посмотреть сообщение
c.ChekName();
в которую входит
Цитата Сообщение от John Prick Посмотреть сообщение
if(p.GetName()==pol[i].FGetName())
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
22.10.2012, 23:10     Классы, наследование #22
Вот вам словосочетание: область видимости объектов. Обязательно прочтите литературу на этот счёт.
Если вкратце, то
C++
1
p.SetName();
и
C++
1
if(p.GetName()==pol[i].FGetName())
Это разные объекты, хоть они и имеют одинаковое имя. А всё потому, что область видимости функции ChekName(); ограничена фигурными скобками и полями того объекта, функция которого вызывается.
Br8k
1 / 1 / 0
Регистрация: 22.10.2012
Сообщений: 42
22.10.2012, 23:14  [ТС]     Классы, наследование #23
спасибо прочитаю, а если в крации, как это обойти?
сылка или адрес или что?
p.s. ну как вы думаю поняли проблема осталась только в сравнивании?
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
22.10.2012, 23:24     Классы, наследование #24
Цитата Сообщение от Br8k Посмотреть сообщение
как это обойти?
Это обходить вредно для дальнейшего развития.
В вашем случае, всей вашей структуре сложно найти какое-то разумное объяснение. Всё свалено в кучу: наследование, создание объектов... Если нужен минимум изменений в существующем коде, вынесите объект p в глобальную область видимости, а из всех функций check уберите его объявление. Но по-хорошему: CTRL+A, DEL, затем хорошенько подумать и написать всё заново.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
22.10.2012, 23:34     Классы, наследование #25
ой, эти ваши классы - скукотища и геморрой. И вообще этот с++ скучная и не нужная няшка.
Br8k
1 / 1 / 0
Регистрация: 22.10.2012
Сообщений: 42
22.10.2012, 23:40  [ТС]     Классы, наследование #26
понял, лучше не стоить, почитаю литературу. спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2012, 16:44     Классы, наследование
Еще ссылки по теме:

C++ Классы и наследование
Классы и наследование c++ C++
C++ Классы и наследование

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

Или воспользуйтесь поиском по форуму:
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
24.10.2012, 16:44     Классы, наследование #27
Цитата Сообщение от Br8k Посмотреть сообщение
понял, лучше не стоить, почитаю литературу. спасибо.
лучше почитай еще раз свое задание, и попробуй сформулировать четко "ответственность" каждого из твоих классов. зачем ты их такими создал. я не вполне понял, а то, что понял - не считаю что хорошо.
я бы посоветовал:
- классы назвать как-нибудь так, чтобы "коню было понятно", что он должен уметь делать.
- не заставлять классы что-нибудь вводить то ли из файла, то ли с клавиатуры. сделай это или в основном модуле, или создай класс специально для того, чтобы что-нибудь вводить.
- не применяй наследование там, где оно неуместно (т.е. сущности, которые эти классы представляют, пусть абстрактные, но должны быть тоже каким-то образом один подвидом другого)
Yandex
Объявления
24.10.2012, 16:44     Классы, наследование
Ответ Создать тему
Опции темы

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