Witam,
Napisałem taki program:
tablica_test.cpp:
#include <iostream>
#include "tablica.h"
using namespace std;
int main(){
tablica tab1;
tab1.wyswietl_pole(0, 0);
return 0;
}
tablica.h:
#ifndef TABLICA_H
#define TABLICA_H
class tablica{
private:
int szerokosc;
int dlugosc;
char ** pole;
public:
tablica();
void wyswietl_pole(int a, int b);
};
#endif
tablica.cpp:
#include "tablica.h"
#include <iostream>
#include <fstream>
using namespace std;
tablica::tablica(){
//otwieranie pliku z mapa
ifstream wejscie("tablica.txt");
if(!wejscie)
cout << "Nie mozna otworzyc pliku!" << endl;
//wczytywanie wielkosci mapy
wejscie >> szerokosc;
wejscie >> dlugosc;
//alokacja miejsca na tablice
int ** pole = new int*[dlugosc];
for(int i = 0; i < dlugosc; i++){
pole[i] = new int[szerokosc];
}
//wczytanie tablicy
char znak;
for(int i = 0; i < dlugosc; i++){
for(int j = 0; j < szerokosc; j++){
wejscie.get(znak);
if(znak == '\n')
wejscie.get(znak);
pole[i][j] = znak;
}
//cout << endl;
}
cout << "pole wewnatrz konstruktora" << endl;
cout.put(pole[0][0]);
cout << endl;
}
void tablica::wyswietl_pole(int a, int b){
cout << "pole wewnatrz funkcji wyswietlajacej" << endl;
cout.put(pole[a][b]);
}
tablica.txt:
1
1
E
Ogólnie program wczytuje tablicę zmiennych typu char do tablicy, którą zawiera dany obiekt. Chciałbym móc wyświetlać pojedyncze pola. Kiedy włączam program, podczas działania konstruktora wyświetla się bez problemu pole[0][0], a kiedy wywołuję osobną funkcję wyświetlającą, to pojawia się błąd naruszenia ochrony pamięci. Jak rozwiązać ten problem?