PDA

Tam Sürümünü Görmek İçin : mutable da sorun?


kaan0489
04/03/2004, 21:23
kod su:

#include <iostream>
#include <string>
using namespace std;

class scrollbar
{
private:
int size;
mutable string owner;
public:
scrollbar(int sz, string own) : size(sz), owner(own)
{}
void setSize(int sz)
{ size = sz; }
void setOwner(string own) const
{ owner = own; }
int getSize() const
{ return size; }
string getOwner() const
{ return owner; }
};

int main()
{
const scrollbar sbar(60, "Window1");

sbar.setOwner("Window2");

return 0;
}


fakat anlamadıgım neden hata verdiği?


acehreli
04/03/2004, 22:50
Keske hatanin ne oldugunu da soylesen :)

Verdigin programin hatasiz olarak derlenip calismasi gerekiyor. Acaba derleyicin 'mutable' sozcugunu mu tanimiyor? Yoksa 'iostream' ve 'string' basliklarini mi?

Oylesine yazilmis bir program da olsa, koru korune de uygulanabilecek bazi kurallar:

- Islev parametrelerini referans olarak tanimlamak gereksiz kopyalari onler. Eger o parametrede degisiklik yapilmayacaksa, parametre 'const' da yapilmalidir. Yani:

void setOwner(string const & own) const;

Eger parametre temel turlerden birisiyse, kopyalamak genellikle referansla erismekten daha ucuzdur. O zaman referans kullanilmamasi daha iyi olabilir. Ornegin:

void setSize(int sz);

- set/get turundeki oge islevler tasarimin zayif oldugunun bir gostergesi olabilir. Bazi durumlarda tabii ki gereklidir, ve bu da bir deneme programi, ama yine de get/set gorunce soyle bir durup dusunmek gerekir.

Ali