Konuyu görüntüle
IUCODERS FORUM > Programlama > C / C++ > visual c++ 6.0'da namespace problemi
Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
26.05.2007-20:31 #22232
visual c++ 6.0'da yazdığım kodun başına

#include <iostream>
using namespace std;

yazdığımda aşırı yüklenen operatörlerde ambiguous hatası ve operatör fonksiyonunun içinde sınıfın private bir üyesine erişmek istendiğinde de erişilemedi hatası veriyor. Fakat bunun yerine sadece

#include <iostream.h>

yazdığımda derleme hatası vermiyor ve sorunsuz bir şekilde çalışıyor. İki gündür internette araştırıyorum, bunun derleyiciden kaynaklanan bir problem olduğu söyleniyor. Zaten kitaplarda yazan birçok örnek de aynı hata sebebi ile derlenmiyor. Bu çelişkiyi açıklayabilecek olan var mı? namespace kullandığım bir programda iostream operatörlerini aşırı yüklemek istediğimde visual c++ 6.0 yetersiz mi kalıyor yani?

Tecrübeli arkadaşların yorumlarını bekliyorum, teşekkürler!





Let`s make this world a better place to live !

Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
28.05.2007-01:10 #22245
Safak kodun icerisinde operator overloading yapacak ve belirsizlik hatası (ambiguous) alacak sekilde kucuk bir versiypnu buraya yapıstırabilir misin?





Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
28.05.2007-01:28 #22246
Çalıştığım kitaptan bir örnek:

#include <iostream>
using namespace std;

class coord {
	int x, y;
public:
	coord() { x=0; y=0; }
	coord(int i, int j) { x=i; y=j; }
	friend ostream &operator << (ostream &stream, coord ob);
};

ostream &operator << (ostream &stream, coord ob) {
	stream << ob.x << ", " << ob.y;
	return stream;
}

int main() {
	coord a(1,1), b(10, 23);
	cout << a << endl;
	cout << b << endl;
	return 0;
}






Let`s make this world a better place to live !

Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
28.05.2007-02:12 #22249
Ben compile edip, calistirdigimda hic bir hata almadim, bu işin ilginc tarafı. IDE ayarlarından kaynaklanıp kaynaklanmadıgına bakmak lazım. Aldıgın hatayı da yapıstırabilir misin?





Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
28.05.2007-02:22 #22251
İngilizce bazı forumlarda da bu konuda sorular sorulmuş ve hataya rastlamadan derlediklerini söyleyenlerden bazıları visual c++ 6.0 için service pack'lerden falan bahsediyorlardı ama pek birşey anlamadım. Önceki mesajımdaki kodu derlerken 4 tane hata verdi:

--------------------Configuration: deneme - Win32 Debug--------------------
Compiling...
deneme.cpp
D:ActiveProjectsCdenemedeneme.cpp(13) : error C2248: 'x' : cannot access private member declared in class 'coord'
        D:ActiveProjectsCdenemedeneme.cpp(5) : see declaration of 'x'
D:ActiveProjectsCdenemedeneme.cpp(13) : error C2248: 'y' : cannot access private member declared in class 'coord'
        D:ActiveProjectsCdenemedeneme.cpp(5) : see declaration of 'y'
D:ActiveProjectsCdenemedeneme.cpp(19) : error C2593: 'operator <<' is ambiguous
D:ActiveProjectsCdenemedeneme.cpp(20) : error C2593: 'operator <<' is ambiguous
Error executing cl.exe.

deneme.obj - 4 error(s), 0 warning(s)






Let`s make this world a better place to live !

Yazar
iemre


avatar
Anadolu
Kayıt: 26.05.2007
06.08.2008-11:11 #50309
Yav bu hatayı bende alıorum şimdi bunun çözümünü bi türlü bulamadım.Şafak sen bi aralar uğraşmışın bunla çözümünü bulduysan şuraya yazarsan sevinirim.Yada bilen herhangi birisi.

confusedconfused





More than one
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
06.08.2008-11:25 #50311
std de tanımlanmış operatörleri override etmene izin vermiyor olabilir.
private olayın içinde bir get fonksyonu yada friend verebilirsin.Friend veriliyomu operatörlere emin değilim ama.





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
06.08.2008-12:49 #50314
Pek hatırlamıyorum 1 yılı geçti ben bu sorunla boğuşalı. Sanırım hiç namspace kullanmayarak yazmıştım sonradan. Eğer problemin benimki gibi friend olarak aşırı yüklenen operatörlerden kaynaklanıyorsa VC 6.0'ın son update paketlerini yükledikten sonra dene istersen.


extreme yazdi
 
std de tanımlanmış operatörleri override etmene izin vermiyor olabilir.
private olayın içinde bir get fonksyonu yada friend verebilirsin.Friend veriliyomu operatörlere emin değilim ama.

Operatörler elbette friend olarak aşırı yüklenebiliyor ve friend olarak aşırı yüklenen operatörlerde private üyelere direkt olarak erişilebiliyor.





Let`s make this world a better place to live !

Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb