Ниже приведен класс, используемый в качестве значения на карте:
class Book
{
int m_nId;
public:
// Book() { } <----- Why is this required?
Book( int id ): m_nId( id ) { }
};
Внутри основной ():
map< int, Book > mapBooks;
for( int i = 0; i < 10; ++i )
{
Book b( i );
mapBooks[ i ] = b;
}
Оператор, вызвавший ошибку:
mapBooks[ i ] = b;
Если я добавлю конструктор по умолчанию, ошибка не появится. Однако я не понимаю, зачем это нужно. Кто-нибудь может объяснить? Если я использую insert()
, проблема не появляется.
Кстати, я использую Visual C ++ 2008 для компиляции.