2009-09-24 18 views
5

İşte benim kodum:C++/CLI derleyicisi neden sembollerle bu kadar karışır?

using namespace System; 
using namespace System::Collections; 
using namespace System::Collections::Generic; 

namespace Tests { 
    ref class MyCollection : public IEnumerable<int> <----HERE! 

Örneğin, C# derleyici bu ad alanlarında sahip olduğu IEnumerable<T>'in System::Collections::Generic olduğunu bilecektir. Neden C++/CLI derleyicisi aynı şeyi yapamıyor? Tam adını veya en az Generic::IEnumerable<int> değerini yazmazsam, onu tanımayacak ve bir C2872 hatası verecek: belirsiz sembol.

Burada bir şey mi eksik?

cevap

6

senin ad alanları göz önüne alındığında IEnumerable

MS Eğer kod kullanmak istiyorsunuz 2 hangi ikisi System::Collections ve System::Collections::Generic IEnumerable tanımlayan

belirsiz?

+3

Erm, biri genel ve diğeri değil? Hangisinin kullanılacağını seçmek zor olmamalı ve ayrıca C# derleyici bununla karıştırılmamalıdır. –

+2

Derleyici, jenerik sürümü seçmesi gereken * önceden * nasıl biliyor? Henüz "" yi ayrıştırmamıştı ve bunu yapsa bile, ilk önce '<' 'nin, jenerik türün başlangıcı olduğunu ve "daha az" operatörünün değil olduğunu belirlemesi gerekir. Ve hala C++'yi doğru bir şekilde ayrıştırmak zorundadır, bu yüzden kodun nasıl ayrıştırıldığını keyfi olarak değiştiremezler. – jalf

+3

C# ve C++ dilleri farklıdır ve bu nedenle kodu farklı yollarla ayrıştırın – Mark

İlgili konular