PDA

Tam Sürümünü Görmek İçin : 'const int student = 10' kodu hata veriyor


ankakusu
22/10/2007, 09:01
ben çok basit bir kod deniyordum ancak
const int yaratmayı bi türlü beceremedim.

Bir bilgisi olan var mı acaba?


bu c1.h olur
class cl1
{
public:
const int student = 10;
cl1();
virtual ~cl1();

};

bu da c1.cpp. bu kodda hiç bir şey yok
cl1::cl1()
{

}

cl1::~cl1()
{

}



aldığım hata bu ne demek oluyor? hatayı sadece

'const int student = 10'

dediğim için aldım...
--------------------Configuration: prj - Win32 Debug--------------------
Compiling...
cl1.cpp
c:\temp\prj\cl1.h(15) : error C2258: illegal pure syntax, must be '= 0'
c:\temp\prj\cl1.h(15) : error C2252: 'student' : pure specifier can only be specified for functions
Error executing cl.exe.

prj.exe - 2 error(s), 0 warning(s)


golgepapaz
22/10/2007, 10:03
cunku sinif icerisinde sadece static const integral tipleri ilkleyebilirsin.

asoza
22/10/2007, 11:10
cl1::cl1()
{
student = 10;
}

Sınıf tanımında sadece değişken tanımlayıp yapıcıda ilk değerini vermeyi deneyin.

acehreli
22/10/2007, 20:44
Ozel bir neden yoksa, genel olarak ilk deger listesinde:


cl1::cl1()
: student(10)
{
}


Ali

Ek: Ozellikle 'const' durumunda zaten baska sansimiz yok; cunku atama islemine izin verilmez. Bu arada, static olmayan 'const' ogeler zaten butun nesnenin atanmasini da engellerler; o yuzden fazla kullanisli degildirler.

hgedek
26/10/2007, 19:21
const nesneleri sınıfın yapıcısında ilk değere atayın.

ankakusu
27/10/2007, 11:39
Ozel bir neden yoksa, genel olarak ilk deger listesinde:


cl1::cl1()
: student(10)
}
}
Ali

Ek: Ozellikle 'const' durumunda zaten baska sansimiz yok; cunku atama islemine izin verilmez. Bu arada, static olmayan 'const' ogeler zaten butun nesnenin atanmasini da engellerler; o yuzden fazla kullanisli degildirler.

Merhaba Ali,

header file içinde

const int student;

deyip senin şu yukardaki kodu yazdığım zaman
kod canavar gibi çalıştı :)

çok mutluyum :)
teşekkür ederim...