Писал код и столкнулся с такой проблемой: при добавлении данных в массив эти данные не сохраняются глобально и существуют только в функции добавления данных. Собственно вот вопрос как глобально сохранить данные.
#pragma once
const int MAX_USR = 80, MAX_NLENG = 15, MAX_SLENG = 15, MAX_CYLENG = 20, MAX_STRLENG=30;
class AccManagment
{
public:
AccManagment();
void Menu();
void AddUsr();
void CloseAcc();
void Deposit();
void Withdraw();
void Info();
void Printacc();
void Search();
void ReadFrom();
void SaveTo();
char Fname[MAX_USR][MAX_NLENG] = { { '0' },{ '0' } };// В любой из ниже указанных массивов не добавляются данные.
char Lname[MAX_USR][MAX_SLENG] = { { '0' },{ '0' } };//
char Street[MAX_USR][MAX_STRLENG] = { { '0' },{ '0' } };//
char City[MAX_USR][MAX_CYLENG] = { { '0' },{ '0' } };//
int ZipCode[MAX_USR] = { 0 };//
int Phone[MAX_USR] = { 0 };//
int Statement[MAX_USR] = { 0 };//
};
#include"AccManagment.h"
#include<iostream>
#include <cstring>
#include <fstream>
using namespace std;
using std::string;
AccManagment::AccManagment()
{
}
void AccManagment::AddUsr() {
AccManagment acc;
int i = 0;
while (Fname[i][0] != '0')
i++;
cout << "\nEnter a name: " << endl;
cin >> Fname[i];//В этой строчке юзер добавляет данные в массив, если запустить проверку в этой функции то массивы будут заполненны.
cout << "\nEnter a surname: " << endl;
cin >> Lname[i];
cout << "\nPlease enter your phone number: " << endl;
cin >> Phone[i];
cout << "\nEnter a street: " << endl;
cin.ignore();
cin.getline(Street[i], '/n');
cout << "\nEnter a City: " << endl;
cin >> City[0];
cout << "\nEnter a zip code: " << endl;
cin >> ZipCode[i];
cout << "\nYour ID Is: ";
cout << i << endl;
acc.Menu();
}
void AccManagment::Printacc() {
AccManagment acc;
//Just testing the function here
cout <<"\nFirst name: " << Fname[0] << endl;//Из другой фунции пытаюсь получить данные которые ввел юзер но получаю лишь 0 которые я назначил в header'e.
cout <<"\nLast name: "<< Lname[0]<<endl;
cout <<"\nPhone number: "<< Phone[0] << endl;
cout <<"\nStreet: "<<Street[0] << endl;
cout << "\nCity: "<< City[0] << endl;
cout <<"\nZip code: " << ZipCode[0] << endl;
cout <<"\Statement: " << Statement[0]<<" $" << endl;
acc.Menu();
}
Из представленного вами кода не ясно, где именно данные "не сохраняются глобально". Но в любом случае ваш код содержит бессмыслицу. В показанных функциях вы создаете временный объект с именем acc
void AccManagment::AddUsr() {
AccManagment acc;
//...
acc.Menu();
}
который не имеет отношения к тому объекту, для которого вызываются функции-члены класса, а затем этот временный объект передаете далее в другие функции, то есть, точнее будет сказать, вызываются функции-члены класса для этого временного объекта, члены данных которого не заполнены.
Функции класса должны иметь дело с тем объектом, для которого они вызываются. Поэтому просто удалите объявление этого временного объекта и вызывайте функции для текущего объекта. Например,
void AccManagment::AddUsr() {
// AccManagment acc; - удалить эту строку
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//...
Menu();
^^^^^^^
}
или тоже самое в другой функции
void AccManagment::Printacc() {
//AccManagment acc; - удалить эту строку
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//...
Menu();
^^^^^^^
}
надо объект класса AccManagment объявлять за пределами функций. У вас идет путаница: объявление класса!=создание объекта класса
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Допустим если я открою текстовый файл и сохраню туда число 65535, то он будет весть 5 байт, но данное число можно в битах выразить как 1111111111111111,...
Написал код на C++ для мк attiny2313 хотел бы узнать как этот код должен выглядеть на самом деле, потому что этот я полагаю костыль тот еще