Riprendo questa discussione perchè ho l'identico problema che avevo postato tempo fa.. come sempre ho una matrice dinamica e quando cerco di cambiare un suo elemento o non ne cambia nessuno o ne cambia due(dei quali nesssuno dei due è quello aspettato).
codice:
#include <iostream>
using namespace std;

class Immagine{
	int** foglio;
	int altezza, larghezza; 
public:
	Immagine(int,int);
	~Immagine();
	bool set(int,int);
	
	friend ostream& operator<<(ostream&, const Immagine&);
};	

Immagine::Immagine(int la, int al)
{	
	altezza = al;
	larghezza = la;
	foglio = new int*[larghezza];
	for(int i=0; i<larghezza; i++)
	{	
		foglio[i] = new int[altezza];
		for(int j=0; j<altezza; j++)
			foglio[i][j] = 0;
	}
	cout << "Costruttore\n";
}			

Immagine::~Immagine()
{
	for(int i=0; i<larghezza; i++)
		delete[] foglio[i];
	delete[] foglio;
	cout << "Distruttore\n";
}		

bool Immagine::set(int la, int al)
{
	if(la>larghezza || la<0)
		return false;
	if(al>altezza || la<0)
		return false;
	foglio[la][al] = 1;
	return true;
}		
	
ostream& operator<<(ostream& os, const Immagine& im)
{
	for(int i=0; i<im.altezza; i++)
	{
		for(int j=0; j<im.larghezza; j++)
		{
			if(im.foglio[i][j] == 0)
				os << im.foglio[i][j];
			else
				os << im.foglio[i][j];
		}
		os << endl;		
	}
	return os;
}	

int main(){
	Immagine i(15,8);
	i.set(2,2);
	cout << i;
	return 0;
}
Ecco l'output:
codice:
The Debugger has exited with status 0.
[Session started at 2009-01-30 12:16:54 +0100.]
Costruttore
000000000000000
000000000010000
001000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
Distruttore

The Debugger has exited with status 0.