2009-12-23 26 views
5

Bir sınıfın bir isim arkadaşı arkadaşım var mıdır, bir çok sınıfa sahip bir birim test ad alanım var ve test ad alanının özel bir uygulama detaylarına erişebilmesi için bir arkadaşa bir sınıf olmasını istedim.Ad alanı ve arkadaşın C++ ile etkileşimi?

cevap

1

Hayır, bu C++ 'da mümkün değildir. Açıkçası, bu zayıf tasarımın peşinde.

+1

Neden kötü tasarım mı diyorsunuz? Sanırım bu yapılabilir ve yararlı olabilir. Bu işaretçi hariç bir sınıf ve ad alanı arasında çok fazla fark yoktur. Arkadaş beyannamesinin neden bir ad alanı için çalışmadığını ve üye işlevinin bir sınıfa ait uygulama ayrıntılarına erişmesini sağladığını anlamıyorum. Bu, sınıfın 'dahili' sınıfına kolay erişim ile ilgili üye olmayan işlevlere izin verebilir. Temelde şimdi nasıl yapacaksınız? Bir isim alanı yeterli olduğunda ve bu sınıf arkadaşı arkadaşım olduğunda bir sınıf beyanı kullanın. arkadaş sınıf erişimi gereken her işlevi? – n1ckp

+2

Sınıflar ve ad alanları arasında birçok farklı fark vardır. –

+5

Tek fark, bir ad alanının kapalı olmamasıdır: her zaman açar ve ona bir şeyler eklemeye başlarsınız. Yani bir arkadaş ismini ilan etmek, aslında tamamen kendini açıyor olacak. Kapanışta biten bir dersi kaldırın}; –

0

.NET kullanıyorsanız, InternalsVisibleTo attribute'a göz atmak isteyebilirsiniz. Her neyse, bunun tek derlemeler için değil, bütün meclisler için çalıştığını unutmayın.