Cześć,
za każdym razem gdy wywołana zostanie metoda, wartości maja być dodawane kolejno do tej samej tablicy (dynamicznej, zdefiniowanej w klasie).
Używam w tym celu dwóch zmiennych statycznych; jedna określa ilość dostępnych miejsc, druga wskazuje w pętli pozycje od których w kolejnych powtórzeniach należny zacząć.
Problem polega na tym, że w każdym kolejnym wywołaniu funkcji po wpisaniu ile wartości chce podać, program przechodzi do kolejnych instrukcji nie dając zainicjalizowac elementów. Gdzie leży problem ?
Program jest podzielony na 3 pliki (definicje, deklaracje, funkcja main).
void List::add()
{
int ile_chce = 0;
static int dostepne = ile;
static int pozycja = 0;
int counter= 0;;
cout << "Twoja tablica ma "<<ile<<" wartosci\n";
cout << "Dostepnych jest: "<<dostepne<<endl;
cout << "Ile wartosci chcesz wpisac: ";
cin >> ile_chce;
if(ile_chce <= dostepne)
{
for ( pozycja; pozycja < ile_chce; pozycja++)
{
cout << "Podaj "<<pozycja+1<< " wartosc: ";
cin >> tab[pozycja];
counter++;
cout<<endl;
}
dostepne-= ile_chce;
cout << "Pozostalo: "<<dostepne<<" ";
cout << "Wpisales: "<<counter<<" wartosci\n";
}
}
#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
class List
{
private:
int ile;
int *tab = new int [ile];
public:
List(int x = 4);
void add();
void show();
};
#endif // LIST_H_INCLUDED
#include <iostream>
#include "list.h"
using namespace std;
int main()
{
List a;
a.add();
a.add();
a.show();
return 0;
}
Mam jeszcze jedno pytanie odnośnie tej metody. Czy jeżeli wywołam metodę dla obiektu a, to czy swobodnie bedę mógł wywołać ją dla obiektu b ; czy zmienne statyczne będą miały domyślne wartości niezależne od wcześniejszych wywołań tej metody?
Pozdrawiam