SORU
29 Mart 2009, Pazar


Neden göster C tipi değişken kullanıldığında boş bir yapıcı gerektirir []?

Ayrıca Bkz: http://stackoverflow.com/questions/695372/c-standard-list-and-default-constructible-types

Dersime hiç belli argümanlar örneği olmak istemiyorum gibi çok büyük bir sorun değil, sadece can sıkıcı.

class MyClass
{
public:
    MyClass(MyType1 t);
    MyType2 &operator[](int index);
}

map<int, MyClass> myMap;

Bu bana g aşağıdaki hata verir:

/usr//c /4.3/bit/stl_map vardır.:419 h: hata: arama için eşleştirme fonksiyonu ‘() Sınıfım’

Bu varsayılan bir kurucu eklersem iyi derler; yanlış sözdizimi kaynaklanan bir şey değil eminim.

CEVAP
30 Mart 2009, PAZARTESİ


Bu sorun operatör ile birlikte[]. BİLGİSAYARINIZDA belgeler: teklif

data_type& operator[](const key_type& k) - Döner nesnesine bir başvuru belli bir ile ilişkili anahtar. Eğer haritanız yoksa değil böyle bir nesne, operator[]içerir ekler varsayılan nesne data_type().

Eğer varsayılan kurucu yok eğer doğru değilse Ekle işlevleri bul/kullanabilirsiniz. Bir sonraki örnek olacak eserler:

myMap.insert( std::map< int, MyClass >::value_type ( 1, MyClass(1) ) );
myMap.find( 1 )->second;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hitcreatormusic2

    hitcreatormu

    21 Mayıs 2010
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011
  • WK

    WK

    9 Ocak 2006