Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/35: Рейтинг темы: голосов - 35, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
1

Передача строк в класс

13.09.2018, 13:43. Показов 7316. Ответов 34
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Прошу помочь разобраться со следующей задачей. Есть класс User, в котором находится логин и пароль пользователя(то что есть помимо этого задействуется в дальнейшем).
Файл User.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
#include <iostream>
class User
{
private:
    int id;
    char *login, *password;
    int num_login, num_password;
public:
    User();
    void authorization(char *en_login; char *en_password; int en_num_login; int en_num_password);
    int activity;
    int counter;
    ~User();
};
Файл User.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include "User.h"
 
 
User::User();
 
User::authorization(char *en_login; char *en_password; int en_num_login; int en_num_password);
{login = en_login;
password = en_password;
num_login = en_num_login;
num_passwor = en_num_passwor;
}
 
User::~User();
Основная программа, при вхождении в которую создается 2 класса user.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include "user.h"
#include "room.h"
 
using namespace std;
 
 
int main()
{
    char str1[]; str2[];
    int st1, st2;
    User us[2]
    For(i = 1; i < 3; i++)
    {       cout << "Enter your login" << endl;
            cin >> str1;
            cout << "Enter your password" << endl;
            cin >> str2;
            int st1 = strlen(str1);
            int st2 = strlen(str2);
            void us[1].authorization(str1, str2, st1,st2);
    }
Вопрос заключается в следующем: правильно ли передается логин и пароль в класс?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2018, 13:43
Ответы с готовыми решениями:

Передача массива строк в класс
Как передать в класс массив строк вместо просто строковых переменных? ComLineParser clp = new...

Класс с универсальным enum-ом. Или передача enum-а в класс
Всем добрый день, У меня имеется абстрактный класс основанный на TextBox. И уже на основе него...

Передача массива в класс
Как правильно передать одномерный массив в класс? И если можно то пример передачи.. Спасибо!

Передача параметров в класс
Помогите понять в чем проблема: package { import flash.display.BitmapData; import...

34
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
16.09.2018, 07:36  [ТС] 21
Author24 — интернет-сервис помощи студентам
Я понял что не записывалось, а почему не записывалось?? И почему некоррректно выдает coins?
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 255
16.09.2018, 09:24 22
Лучший ответ Сообщение было отмечено Dinar17 как решение

Решение

Индекс первого элемента массива - 0
C++
1
for (int i = 0; i <= 1; i++)
Добавлено через 39 минут
C++
1
2
3
4
5
void User::purse(int en_coins)
{
    int coins = en_coins;
 
}
Убрать int.
0
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
17.09.2018, 22:02  [ТС] 23
Исправлено, заработало! Вообще странно что с int выдает некорректно. Что за фигня????? Можно поподробнее или ссылку?
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
17.09.2018, 22:32 24
Цитата Сообщение от Dinar17 Посмотреть сообщение
User() {};
Цитата Сообщение от Dinar17 Посмотреть сообщение
~User() {};

Не по теме:

Впервые в своей практике встречаю конструктор и деструктор, у которых стоит ";" после фигурных скобок. Объясните, пожалуйста, в каких случаях это допустимо, и какой смысл несет ";"?

0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
18.09.2018, 00:07 25
Цитата Сообщение от Pashka Durov Посмотреть сообщение
Впервые в своей практике встречаю конструктор и деструктор, у которых стоит ";" после фигурных скобок. Объясните, пожалуйста, в каких случаях это допустимо, и какой смысл несет ";"?
ровно такой же смысл как и здесь. Конструктор отдельно, пустая строка после конструктора, оканчивающаяся ;;; отдельно.
C++
1
2
3
4
5
class x {
    ;
    ;
    ;
};
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 255
18.09.2018, 03:04 26
Цитата Сообщение от Dinar17 Посмотреть сообщение
Вообще странно что с int выдает некорректно. Что за фигня?????
В классе user объявлена переменная coins, в функции purse то же объявлена, а это получаются разные переменные. Присваивается одной а читается из другой.
1
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
18.09.2018, 14:22  [ТС] 27
В процессе проверки возник еще один вопрос. login и password для обеих объектов запоминается одно и то же( то что передается в инициализацию по ссылке). То что перердается как целое для разных объектов разные значения(например coins). Думаю, что когда я передаю по ссылке, оба объекта обращаются по одной и той же ссылке. Как сорганизовать так, чтобы при вызове функции authorization программа обращалась к разным ссылкам?
0
18841 / 9840 / 2408
Регистрация: 30.01.2014
Сообщений: 17,281
18.09.2018, 14:36 28
Dinar17, у вас память под строки не выделена. Отсюда эти спецэффекты.
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
18.09.2018, 14:36 29
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ровно такой же смысл как и здесь. Конструктор отдельно, пустая строка после конструктора, оканчивающаяся ;;; отдельно.

Не по теме:

то бишь эти ; были необязательны

0
18841 / 9840 / 2408
Регистрация: 30.01.2014
Сообщений: 17,281
18.09.2018, 14:42 30
Dinar17, вообще у вас какое-то совершенно дикое количество ошибок в исходном посте.
Вы код закрыв глаза набирали?
Кликните здесь для просмотра всего текста

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
#include <cstring>
#include <iostream>
 
enum { MAX_SIZE = 256 };
 
class User
{
private:
    int  id;
    char login[MAX_SIZE];
    char password[MAX_SIZE];
    int num_login, num_password;
public:
    User();
    void authorization(const char *en_login, const char *en_password, int en_num_login, int en_num_password);
    int activity;
    int counter;
    ~User();
};
 
User::User()
{ }
 
void User::authorization(const char *en_login, const char * en_password, int en_num_login, int en_num_password)
{
    strncpy(login, en_login, MAX_SIZE);
    strncpy(password, en_password, MAX_SIZE);
    num_login = en_num_login;
    num_password = en_num_password;
}
 
User::~User()
{ }
 
int main()
{
    using namespace std;
 
    char str1[MAX_SIZE];
    char str2[MAX_SIZE];
    int st1, st2;
    User us[2];
 
    for(int i = 0; i < 2; i++)
    {
        cout << "Enter your login" << endl;
        cin >> str1;
        cout << "Enter your password" << endl;
        cin >> str2;
        int st1 = strlen(str1);
        int st2 = strlen(str2);
 
        us[i].authorization(str1, str2, st1, st2);
    }
}
0
Reavolt
18.09.2018, 16:00
  #31

Не по теме:

Pashka Durov, Не нужны, это я опечатался. :-|

0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
18.09.2018, 17:28 32
Цитата Сообщение от Pashka Durov Посмотреть сообщение
то бишь эти ; были необязательны
логично, ч0. Очевидно, если бы это было не так, ты бы это, как сам сказал, заметил бы это в своей практике.
1
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
18.09.2018, 19:54 33
Reavolt, понял принял
0
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
19.09.2018, 12:52  [ТС] 34
Цитата Сообщение от DrOffset Посмотреть сообщение
Dinar17, вообще у вас какое-то совершенно дикое количество ошибок в исходном посте.
Вы код закрыв глаза набирали?
Набирал с широко открытыми глазами. В свою защиту скажу что изучаю сам, по самоучителям и т.д, и начал недавно.
Функция strncpy у меня дает ошибку, вместо этого использовал strncpy_s.
А за развернутый ответ спасибо большое
0
139 / 67 / 46
Регистрация: 15.10.2015
Сообщений: 308
19.09.2018, 12:59 35
Dinar17, Это навязывает Visual Studio используйте strncpy. Project -> Properties --> C/C++ --> General --> SDL checks = No (/sdl-) Вроде так можно отключить.
1
19.09.2018, 12:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2018, 12:59
Помогаю со студенческими работами здесь

Передача массива в класс
Добрый день. Имеется конструктор класса chart_form(double data) { InitializeComponent();...

Передача в класс массива
Доброго времени суток! Вообщем, надо передать в класс class Range { private: int size; int*...

передача параметра в класс
в методе я вывожу поля класса по условию, как передавать в класс переменную х, и использовать х в...

Передача переменной в класс
суть передать переменные в методы класса, для начала я передал переменную в основной метод класса ...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru